Я пытаюсь найти способ проверить в заданном каталоге дубликаты файлов (даже с разными именами) и заменить их символическими ссылками, указывающими на первое вхождение. Я пытался с, 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).