Передайте xargs аргумент как строку к другой команде с'>'?

Удивленный никто больше еще не упомянул этого:

rm -rf .*

(При попытке удалить все скрытые файлы и подкаталоги, полностью упущении, что это рекурсивно вызовет в . и ..)

9
05.02.2011, 01:26
3 ответа

Вам нужен некоторый способ сказать, что Вы хотите отправить вывод md5sum в файл. С тех пор find (или xargs) не имеет этой функциональности встроенной, и md5sum только знает, как распечатать к стандартному выводу, перенаправление оболочки является самым простым путем.

Обратите внимание, что Ваша команда не будет работать в общем случае по другой причине: выходной формат find не формат ввода xargs, они не соглашаются с именами файлов, содержащими пробел или \"'. Использовать find -exec вместо этого.

find . -type f -exec sh -c 'md5sum "$0" >"$0.md5"' {} \;
4
27.01.2020, 20:05

Необходимо использовать подоболочку для обработки перенаправления IO:

find . -type f | xargs -iFILES sh -c 'md5sum FILES > FILES.md5'
7
27.01.2020, 20:05

С Параллелью GNU можно сделать:

find . -type f | parallel md5sum {} \> {}.md5

Вы извлекаете дополнительную пользу из выполнения md5sum параллельно, и это регистрирует как:

My brother's 12" records.txt

не заставит Вашу команду отказывать. Посмотрите вводное видео для узнавания больше: http://www.youtube.com/watch?v=OpaiGYxkSuQ

5
27.01.2020, 20:05

Теги

Похожие вопросы