Próbuję znaleźć sposób na sprawdzenie w danym katalogu zduplikowanych plików (nawet o różnych nazwach) i zastąpienie ich dowiązaniami symbolicznymi wskazującymi na pierwsze wystąpienie. Próbowałem z, fdupes
ale wyświetla tylko te duplikaty.
Taki jest kontekst: dostosowuję motyw ikon do swoich upodobań i odkryłem, że wiele ikon, nawet jeśli mają różne nazwy i różne lokalizacje w swoim folderze nadrzędnym i są używane do różnych celów, w zasadzie są takie same obrazek. Ponieważ zastosowanie tej samej modyfikacji dwadzieścia lub trzydzieści razy jest zbędne, gdy tylko jeden jest naprawdę potrzebny, chcę zachować tylko jeden obraz i dowiązać symbolicznie wszystkie pozostałe.
Na przykład, jeśli uruchomię się fdupes -r ./
w katalogu testdir
, może zwrócić mi następujące wyniki:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
Biorąc pod uwagę ten wynik, chciałbym zachować tylko plik file1.png
, usunąć wszystkie pozostałe i zastąpić je dowiązaniami symbolicznymi wskazującymi do niego, zachowując jednocześnie wszystkie oryginalne nazwy plików. Zachowa więc file2.png
swoją nazwę, ale stanie się łączem do file1.png
zamiast być duplikatem.
Te linki nie powinny wskazywać bezwzględnej ścieżki, ale powinny być względne w stosunku do testdir
katalogu nadrzędnego ; tj. yetanotherfile.png
będzie wskazywać ../../file1.png
, a nie/home/testuser/.icons/testdir/file1.png
Interesuję się zarówno rozwiązaniami, które obejmują GUI i CLI. Cytowanie go nie jest obowiązkowe fdupes
, ponieważ to narzędzie, które znam, ale jestem otwarty na rozwiązania wykorzystujące również inne narzędzia.
Jestem prawie pewien, że skrypt bash, który poradzi sobie z tym wszystkim, nie powinien być trudny do stworzenia, ale nie jestem wystarczająco ekspertem, aby dowiedzieć się, jak sam go napisać.
v1.51
(Ubuntu 14.04.2 LTS).