7

Я пытаюсь найти все дубликаты файлов (на основе хеша MD5) и упорядочены по размеру файла. Пока у меня есть это:

find . -type f -print0 | xargs -0 -I "{}" sh -c 'md5sum "{}" |  cut -f1 -d " " | tr "\n" " "; du -h "{}"' | sort -h -k2 -r | uniq -w32 --all-repeated=separate

Выход этого:

1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture2.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture2.s

d41d8cd98f00b204e9800998ecf8427e 0      ./test(1).log

Это самый эффективный способ?

3 ответа3

7

От "man xargs": -Я подразумеваю -L 1 Так что это не самое эффективное. Было бы более эффективно, если вы просто дадите md5sum столько имен файлов, сколько будет:

find . -type f -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

Тогда у вас не будет размера файла, конечно. Если вам действительно нужен размер файла, создайте сценарий оболочки, который выполняет md5sum и du -h и объединяет строки с помощью join .

0

Используйте либо btrfs + duperemove, либо zfs с онлайн-дедупликацией. Он работает на уровне файловой системы и будет сопоставлять даже равные части файла, а затем использовать CoW файловой системы, чтобы сохранить только одну из них, оставляя файлы на месте. Когда вы изменяете одну из общих частей в одном из файлов, она запишет изменение отдельно. Таким образом, вы можете иметь такие вещи, как /media и /backup /media-2017-01-01, потребляющие только размер каждого уникального фрагмента информации в обоих деревьях.

0

Иногда мы работаем над сокращенными наборами команд linux, такими как busybox или другие вещи, которые поставляются с NAS и другими встроенными аппаратными средствами linux (IoT). В этих случаях мы не можем использовать такие параметры, как -print0 , что вызывает проблемы с пространствами имен. Поэтому мы можем вместо этого предпочесть:

find | while read file; do md5sum "$file"; done > /destination/file

Затем наш /destination/file готов к любому типу процесса, как sort и uniq как обычно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .