Построение списка (списков) аргументов и вызов программы (POSIX)
xargs [-itvx] [-n число_аргументов] [-P n] [-s размер] [программа [начальные_аргументы]]
255
.1
.4096
.PATH
. Если программа не указана, по умолчанию выполняется утилита echo.ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита xargs использует символьные строки, считываемые из стандартного потока ввода, для построения командной строки, которую затем выполняет. Указанная программа и начальные_аргументы помещаются в начало командной строки, а затем указывается некоторое количество считанных символьных строк. Выполнение этого процесса продолжается до конца файла.
Утилита выполняет указанную программу с начальными_аргументами один или несколько раз с использованием параметров, считываемых из стандартного потока ввода. Количество дописываемых строк можно ограничить с помощью опции -n; размер командной строки можно ограничить с помощью опции -s.
Строки разделяются пробелами или символами новой строки, которые могут быть встроены в строки путем ввода перед ними символа \ или заключения в кавычки ("). Для использования кавычек в исходном значении перед ними необходимо ввести символ \.
В результате выбора опции -i команда выполняется для каждой считываемой строки. Вместо стандартного процесса дописывания строки в буфер команд сканируются начальные_аргументы, и каждое вхождение {} заменяется строкой. Если {} отсутствует в начальных_аргументах, строка дописывается в командную строку и выполняется.
При выполнении команды наследуются стандартные потоки вывода и ошибок xargs. В качестве стандартного потока ввода устанавливается управляющий терминал.
Утилита xargs всегда ограничивает общий размер буфера команд 4096 символами. Пример проверки целостности файлов данных на гибком диске (смонтированном как /fd
):
find /fd -print | xargs cksum | diff check_file -
В приведенном выше примере утилита find выводит имя каждого файла в смонтированной файловой системе. Утилита xargs группирует имена файлов для cksum с целью минимизации количества выполнений утилиты cksum. После этого выполняется утилита diff, которая позволяет проверить соответствие полученных контрольных сумм суммам, записанным в файле check_file.
Обратите внимание, что к такому же результату приведет выполнение следующей команды:
find /fd -exec cksum {} \; | diff check_file -
Однако cksum необходимо загрузить повторно для каждого файла в /fd
.
Использование cmp для определения совпадения файлов в каталоге old_data с файлами в каталоге new_data:
ls old_data | xargs -i cmp old_data/{} new_data/{}
Просмотр файлов в текущем рабочем каталоге и всех подкаталогов в двух столбцах:
find . -print | xargs -n 2 echo
Базовые подсистемы ЗОСРВ «Нейтрино», POSIX
Предыдущий раздел: Утилиты