Я рекомендую. — Fdupes, и чего мне к нему не хватало
Статью такую давно хотела прочитать, и кажется, уже могу написать. Если что не так, поправляйте.
Проблема поиска одинаковых файлов на диске знакома многим. Одним из очевидных решений является использование консольной программы fdupes. Об этом на welinux уже писали тут.
А дальше у меня возникали вопросы. На которые я, кажется, нашла приличные ответы.
Что делать с результатами поиска?
Если обшаривать не особенно обширные пространства, можно запустить fdupes с ключиком -d, и на каждую группу файлов она будет спрашивать, какие оставить. Заметим, варианта "удали всё нафиг, и чтоб глаза мои не видели!" не предусмотрено. Один экземпляр останется, придётся удалять ручками. Если пространства обширные и дублей много - разгребание в таком режиме просто неподъёмно.
Можно попросить fdupes сложить все обретённые сведения в файлик. Тогда с этим файликом надо будет как-то разбираться. И опять возникает потрясающая идея удалять всё ручками. Брр!
А ещё, когда разгребаешь от дублей большие объёмы, практически гарантированно возникают пустые папки, папки пустых папок, папки папок пустых папок, и опять же, разгребать всё это безобразие лучше бы не вручную.
Вопросы задали, переходим к ответам
Ответ номер один - это команда, которая может удалять файлы по выданному ей списку. Собирать из xargs и rm, опции по вкусу :)
Ответ номер два - это команда, которая может находить пустые папки: find _где_искать_ -type d -empty. В принципе, find и удалять сразу может, но я предпочитаю сначала посмотреть, что я удаляю.
Ответ номер два-с-половиной - команда, которая может удалять пустые папки точно так же, по списку. Почти аналогично первому, но xargs и rmdir.
Комментарий к ответам, мне оно было надо. Смысл xargs в том, чтобы передать аргументы команде. Xargs, в отличие от rm и rmdir, соглашается брать инфу и из файла, и из standart input, и умеет собрать команду с этой инфой. И это круто! :)
Как у меня это работает
1. Сначала, разумеется, fdupes -r интересующие_папки > dupes.txt. На выходе получаем файлик, в котором по группам собраны одинаковые файлы.
2. Открыть dupes.txt, и "творить". :) На выходе должен получиться список файлов на удаление и поуменьшившийся dupes.txt. Иногда копировала часть из dupes.txt и удаляла строки с оставляемым, иногда грепала по адресу каталога, иногда... в общем, как было удобно :)
3. Скормить этот список своей любовно собранной команде по мотивам ответа 1.
4. Пока не надоело или пока dupes.txt не опустел, повторять шаги 2-3.
5. Запустить поиск пустых каталогов командой из ответа 2. Посмотреть, что получилось. Удалить ненужные командой по мотивам ответа 3. Повторять, пока ненужные пустые каталоги не кончатся.
6. Забыть всё это как страшный сон до следующего раза :)
А ещё, по слухам, можно не мучиться и поставить FSlint.
Проблема поиска одинаковых файлов на диске знакома многим. Одним из очевидных решений является использование консольной программы fdupes. Об этом на welinux уже писали тут.
А дальше у меня возникали вопросы. На которые я, кажется, нашла приличные ответы.
Что делать с результатами поиска?
Если обшаривать не особенно обширные пространства, можно запустить fdupes с ключиком -d, и на каждую группу файлов она будет спрашивать, какие оставить. Заметим, варианта "удали всё нафиг, и чтоб глаза мои не видели!" не предусмотрено. Один экземпляр останется, придётся удалять ручками. Если пространства обширные и дублей много - разгребание в таком режиме просто неподъёмно.
Можно попросить fdupes сложить все обретённые сведения в файлик. Тогда с этим файликом надо будет как-то разбираться. И опять возникает потрясающая идея удалять всё ручками. Брр!
А ещё, когда разгребаешь от дублей большие объёмы, практически гарантированно возникают пустые папки, папки пустых папок, папки папок пустых папок, и опять же, разгребать всё это безобразие лучше бы не вручную.
Вопросы задали, переходим к ответам
Ответ номер один - это команда, которая может удалять файлы по выданному ей списку. Собирать из xargs и rm, опции по вкусу :)
Ответ номер два - это команда, которая может находить пустые папки: find _где_искать_ -type d -empty. В принципе, find и удалять сразу может, но я предпочитаю сначала посмотреть, что я удаляю.
Ответ номер два-с-половиной - команда, которая может удалять пустые папки точно так же, по списку. Почти аналогично первому, но xargs и rmdir.
Комментарий к ответам, мне оно было надо. Смысл xargs в том, чтобы передать аргументы команде. Xargs, в отличие от rm и rmdir, соглашается брать инфу и из файла, и из standart input, и умеет собрать команду с этой инфой. И это круто! :)
Как у меня это работает
1. Сначала, разумеется, fdupes -r интересующие_папки > dupes.txt. На выходе получаем файлик, в котором по группам собраны одинаковые файлы.
2. Открыть dupes.txt, и "творить". :) На выходе должен получиться список файлов на удаление и поуменьшившийся dupes.txt. Иногда копировала часть из dupes.txt и удаляла строки с оставляемым, иногда грепала по адресу каталога, иногда... в общем, как было удобно :)
3. Скормить этот список своей любовно собранной команде по мотивам ответа 1.
4. Пока не надоело или пока dupes.txt не опустел, повторять шаги 2-3.
5. Запустить поиск пустых каталогов командой из ответа 2. Посмотреть, что получилось. Удалить ненужные командой по мотивам ответа 3. Повторять, пока ненужные пустые каталоги не кончатся.
6. Забыть всё это как страшный сон до следующего раза :)
А ещё, по слухам, можно не мучиться и поставить FSlint.