Найти RAR с дублированным контентом

0

Мне нужна утилита для поиска файлов RAR, которые содержат дубликаты данных (то есть файлы в RAR, которые имеют одинаковые хэши, но могут иметь разные имена).

Я могу открыть RAR и увидеть, что CRC одинаковы, но я надеялся на более автоматизированный процесс, который бы работал в натуральном выражении (сотни файлов).

Хэширование общего RAR не поможет, потому что файл, содержащийся внутри, может иметь разные имена, или архив может быть сжат на разных уровнях.

При необходимости будет работать утилита, которая извлекает содержимое RAR и затем сравнивает их, но это не является предпочтительным.

Я бы предпочел бесплатную утилиту для Windows, но платная утилита или утилита для Linux были бы приемлемы.

Скотт МакКленнинг
источник

Ответы:

1

Возможно, вы могли бы заставить все это работать за один шаг, но может быть проще сделать что-то вроде этого (linux):

for i in *.rar ; do  unrar l $i | tail -n+8 | head -n-3 | awk -v val=$i '{ printf("\"%s\" \"%s\" \"%s\"\n",val,$1,$8)}' >> rarfiles; done

Это позволит просмотреть все файлы в текущем каталоге и вывести все файлы в rars в файл с именем rarfiles, похожий на этот:

"rar name" "filename" "crc" 

Команды "head" и "tail" просто удаляют верхний и нижний колонтитулы с вывода unrar. Затем awk извлекает первое и восьмое поля, $ i (имя файла rar) передается как параметр через -v, поэтому мы можем вывести его вместе с выводом.

затем

 cat rarfiles | sort -k3,3 | uniq -D -f2

Это покажет дупс. Параметры сортировки говорят, что третье поле (crc) должно быть отсортировано, а uniq -D говорит, что отображаются только дубликаты строк, игнорируя первые два поля (так что пропускаются «rar name» и «filename», поэтому отображаются только дупсеты, имеющие тот же CRC.

Павел
источник
Командные строки отличные, кроме одного. Если у файла RAR или файлов в RAR есть пробелы в их именах, у команды возникла проблема. Вы знаете, как обойти это? Еще раз спасибо.
Скотт МакКленнинг