Я пытаюсь найти способ проверить в заданном каталоге дубликаты файлов (даже с разными именами) и заменить их символическими ссылками, указывающими на первое вхождение. Я пытался с, fdupesно он просто перечисляет эти дубликаты.
Это контекст: я настраиваю тему значков по своему вкусу, и я обнаружил, что многие значки, даже если они имеют разные имена и разные местоположения в родительской папке и используются для разных целей, в основном одинаковы картина. Поскольку применение одной и той же модификации двадцать или тридцать раз является излишним, когда действительно необходим только один, я хочу оставить только одно изображение и дать ссылку на все остальные.
Например, если я запускаю fdupes -r ./внутри каталога testdir, он может вернуть мне следующие результаты:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
Учитывая этот вывод, я хотел бы сохранить только файл file1.png, удалить все остальные и заменить их символическими ссылками, указывающими на него, сохраняя при этом все исходные имена файлов. Таким образом file2.png, сохранит свое имя, но file1.pngвместо ссылки станет ссылкой на него.
Эти ссылки не должны указывать на абсолютный путь, но должны быть относительно родительского testdirкаталога; т.е. yetanotherfile.pngбудет указывать на ../../file1.png, а не на/home/testuser/.icons/testdir/file1.png
Я заинтересован как в решениях, которые включают GUI и CLI. Необязательно использовать, fdupesя процитировал это, потому что это инструмент, который я знаю, но я открыт для решений, которые также используют другие инструменты.
Я почти уверен, что bash-скрипт для обработки всего этого не должен быть таким сложным для создания, но я не достаточно опытен, чтобы самому понять, как его написать.
v1.51(Ubuntu 14.04.2 LTS).