Re: Поиск и удаление дублирующих файлов
> > Какие программы есть на эту тему? Желательно, чтоб можно было
> > посмотреть список файлов-дубляжей и выборочно удалить любой из них.
> >
> >
>
> Моё творение:
>
> #! /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
Ну, про то, что твоя программа грохается на файлах, содержащих перевод строки
в имени, я просто в скобках замечу. Да, это извращение, но это вполне
легитимный символ в имени файла.
--
Чушь для ресниц (С)энта
Reply to: