Хорошо, это справедливо. Но если рассматривать это как учебное упражнение для linux cmd, можно ли это улучшить? Например, изначально я начал с -exec 'md5sum .....', но исследование показало (с помощью Google), что xargs был более эффективным.
Jamie Curran 12 лет назад
0
Если вы хотите изучить новые методы, я предлагаю посмотреть, как эти инструменты решают проблему, и вы получите много умных идей (источник, Люк, используйте источник).
Paulo Scardine 12 лет назад
0
Смотрите также http://unix.stackexchange.com/a/71178/23542
artfulrobot 9 лет назад
0
3 ответа на вопрос
7
Olaf Dietsche
From "man xargs": -I implies -L 1 So this is not most efficient. It would be more efficient, if you just give as many filenames to md5sum as possible, which would be:
Then you won't have the file size of course. If you really need the file size, create a shell script, which does the md5sum and du -h and merge the lines with join.
0
robo
Sometimes we are working on reduced sets of linux commands, like busybox or other things that comes with NAS and other linux embedded hardwares (IoTs). In these cases we can't use options like -print0, getting troubles with namespaces. So we may prefer instead:
find | while read file; do md5sum "$file"; done > /destination/file
Then, our /destination/file is ready for any kind of process like sort and uniq as usual.
0
orange_juice6000
Используйте либо btrfs + duperemove, либо zfs с онлайн-дедупликацией. Он работает на уровне файловой системы и будет соответствовать даже равным частям файла, а затем использовать CoW файловой системы, чтобы сохранить только одну из них, оставляя файлы на месте. Когда вы изменяете одну из общих частей в одном из файлов, она запишет изменение отдельно. Таким образом, вы можете иметь такие вещи, как / media и / backup / media-2017-01-01, потребляющие только размер каждого уникального фрагмента информации в обоих деревьях.