Tôi đang cố gắng tìm cách kiểm tra bên trong một thư mục nhất định cho các tệp trùng lặp (ngay cả với các tên khác nhau) và thay thế chúng bằng các liên kết tượng trưng chỉ đến lần xuất hiện đầu tiên. Tôi đã thử với fdupes
nhưng nó chỉ liệt kê những bản sao đó.
Đó là bối cảnh: Tôi đang tùy chỉnh một chủ đề biểu tượng theo ý thích của mình và tôi đã tìm thấy nhiều biểu tượng, ngay cả khi chúng có tên khác nhau và vị trí khác nhau trong thư mục mẹ của chúng và được sử dụng cho các mục đích khác nhau, về cơ bản là giống nhau hình ảnh. Vì việc áp dụng cùng một sửa đổi hai mươi hoặc ba mươi lần là không cần thiết khi chỉ cần một lần thực sự cần thiết, tôi muốn chỉ giữ một hình ảnh và liên kết tượng trưng cho tất cả các hình ảnh khác.
Ví dụ, nếu tôi chạy fdupes -r ./
trong thư mục testdir
, nó có thể trả về cho tôi các kết quả sau:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
Với đầu ra này, tôi chỉ muốn giữ lại tệp file1.png
, xóa tất cả các tệp khác và thay thế chúng bằng các liên kết tượng trưng trỏ đến nó, trong khi duy trì tất cả các tên tệp gốc. Vì vậy, file2.png
sẽ giữ lại tên của nó, nhưng sẽ trở thành một liên kết đến file1.png
thay vì là một bản sao.
Các liên kết đó không nên trỏ đến một đường dẫn tuyệt đối, mà nên liên quan đến testdir
thư mục cha ; tức là yetanotherfile.png
sẽ được trỏ đến ../../file1.png
, không phải/home/testuser/.icons/testdir/file1.png
Tôi quan tâm đến cả các giải pháp liên quan đến GUI và CLI. Không bắt buộc phải sử dụng fdupes
Tôi đã trích dẫn vì đây là công cụ mà tôi biết, nhưng tôi cũng mở cho các giải pháp sử dụng các công cụ khác.
Tôi khá chắc chắn rằng một tập lệnh bash để xử lý tất cả những điều này không quá khó để tạo ra, nhưng tôi không đủ chuyên môn để tự tìm ra cách viết nó.
v1.51
(Ubuntu 14.04.2 LTS).