Каково использование - должностное лицо xargs и-print0?

Я думаю, что это распространенные способы передать результат одной команды к следующей как исходные данные.

Как эти три работают? Или каковы некоторые ВЕБ-САЙТЫ/URL?

20
задан 02.12.2017, 03:59

3 ответа

Первые вещи ввести:

man find

man xargs

find управляйте результатами печати к стандартному выводу по умолчанию, таким образом, -print опция обычно не нужна, но -print0 разделяет имена файлов с 0 (ПУСТЫМИ) байтами так, чтобы имена, содержащие пробелы или новые строки, могли быть интерпретированы правильно.

-exec опция - что-то, что можно использовать вместо xargs - команда находки выполняет команду для каждого объекта, который это находит.

xargs управляйте пространством чтений - или разделенные от новой строки строки (обычно от команды находки, но они могли прибыть отовсюду), и выполняет некоторую команду для каждой строки.
Если xargs будет выполнен с-0 опциями, то он будет ожидать РАЗДЕЛЕННЫЕ ОТ ПУСТОГО УКАЗАТЕЛЯ строки, как произведено find ... -print0

Преимущество xargs состоит в том, что он может собрать в группу строки, так, чтобы он только выполнил команду несколько раз вместо n времен.

Таким образом в нормальном использовании:

find start_directory -name '*.txt' | xargs ls -l 

находка перечислила бы имена файлов, и xargs даст команды как:

ls -l file1.txt file2.txt file3.txt ... fileN.txt

который быстрее, чем наличие Вашего издания команды находки:

ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
25
ответ дан 07.12.2019, 10:11

Обратите внимание, что xargs больше не необходим с текущими реализациями находки что, вероятно, вся поддержка этот синтаксис POSIX:

find directory -name '*.txt' -exec ls -l {} + 

который более прост и немного быстрее, чем xargs вариант.

find directory -name '*.txt' | xargs ls -l 
7
ответ дан 07.12.2019, 10:11

Теги

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