> > Какие программы есть на эту тему? Желательно, чтоб можно было > > посмотреть список файлов-дубляжей и выборочно удалить любой из них. > > > > > > Моё творение: > > #! /bin/bash > > # Алгоритм работы скрипта: > # 1. Составить список файлов > # 2. Вычислить все md5 суммы файлов
Сходу: это надо делать только после того, как отфильтрованы файлы, чей размер не совпадает ни с каким другим. Большие файлы обычно характерны тем, что шансов на совпадение размера у них немного, а считать даже md5 от них можно заманаться. > # 3. Отсортировать список по md5 суммам > # 4. Пройтись по списку, сравнивая попарно md5 записанные в строках и > # если текущая совпала с предыдущей то вывести обе, но одну пометить > file: а другую dup: > # А чтобы третья и последующая так же не выдавали метки file: то > можно использовать имя файла в предыдущей строке > # как флаг, и обнулять его после первого вывода метки file: > # > # в последствии можно отфильтровать полученный список через grep > "^dup" и пустить на съедение команде rm > # > # Создаем файл блокировки find_duplicate.process чтобы повторно > не запустился поиск # одновременно в этом файле находится фраза, > описывающая какие действия выполняет скрипт. # Вот примеры того > что бывает в этом файле: # 'Построение списка файлов...' > # '23634 of 3974653' > > # > # fixme: перенаправить stderr в файл > # такая команда не помогает: > # 2>$0.errlog > > if [ -e $0.process ] > then > echo "Already running..." > exit > fi > > if [ $# -ne 2 ] > then > echo "Use: $0 <dir> <out_file>" > exit > fi > > FINDDIR="$1" > TMPNAME=`tempfile` > > echo 'Построение списка файлов...' > $0.process > > # составим список только файлов (исключая директории) > > find $FINDDIR -type f > $TMPNAME.list > > # отфильтруем не нужные > > cat $TMPNAME.list | grep -v "/Trash/" > $TMPNAME.list2 > mv $TMPNAME.list2 $TMPNAME.list > > # определим количество файлов > # для того чтобы отображать сколько файлов уже обработано > > CNT=`grep -c "" $TMPNAME.list` wc -l Ну, про то, что твоя программа грохается на файлах, содержащих перевод строки в имени, я просто в скобках замечу. Да, это извращение, но это вполне легитимный символ в имени файла. -- Чушь для ресниц (С)энта -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/87wrbeiix6.wl%[email protected]

