У меня есть большой и растущий набор текстовых файлов, которые все довольно малы (менее 100 байт). Я хочу различить каждую возможную пару файлов и отметить, которые являются дубликатами. Я мог бы написать скрипт Python для этого, но мне интересно, есть ли существующий инструмент командной строки Linux (или, возможно, простая комбинация инструментов), который бы делал это?
Обновление (в ответ на комментарий mfinni ): все файлы находятся в одном каталоге, поэтому все они имеют разные имена файлов. (Но у всех них есть общее расширение имени файла, что позволяет легко выбирать их все с помощью подстановочного знака.)
Ответы:
Там фдупес . Но я обычно использую комбинацию
find . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36
источник
find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34
(Я использовал uniq -D, и я предпочитаю, чтобы xargs нашел -exec.)xargs
как это не работает для имен файлов с пробелами, использование-exec
однако делает. Использование в-type f
качестве дополнительного аргументаfind
(может использоваться вместе с-name
) ограничивает поиск файлами.Ну, есть FSlint - который я не использовал для этого конкретного случая, но я должен быть в состоянии справиться с этим: http://en.flossmanuals.net/FSlint/Introduction
источник
Вы почти наверняка не хотите различать каждую пару файлов. Возможно, вы захотите использовать что-то вроде md5sums, чтобы получить все контрольные суммы всех файлов и передать их в какой-то другой инструмент, который будет сообщать только повторяющиеся контрольные суммы.
источник