Я намагаюся знайти спосіб перевірити всередині даного каталогу дублікати файлів (навіть з різними іменами) і замінити їх символьними посиланнями, що вказують на перше виникнення. Я намагався, 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
Мене цікавлять і рішення, які передбачають графічний інтерфейс та CLI. Це не обов'язкове використання fdupes
Я цитував це, тому що це інструмент, який я знаю, але я відкритий для рішень, які використовують і інші інструменти.
Я майже впевнений, що bash-скрипт для обробки всього цього не повинен бути таким складним для створення, але я недостатньо досвідчений, щоб з’ясувати, як його написати самостійно.
v1.51
(Ubuntu 14.04.2 LTS).