xargs

Построение списка (списков) аргументов и вызов программы (POSIX)

Синтаксис:

xargs [-itx] [-n число_аргументов] [-P n] [-s размер]

[программа [начальные_аргументы]]

Поддерживаемые платформы:

QNX Neutrino, Microsoft Windows

Опции:

-i

(Расширение QNX Neutrino.) Выполнить в "режиме вставки". Программа выполняется один раз для каждого элемента в стандартном потоке ввода. Каждое вхождение {} в начальных_аргументах заменяется аргументом, считываемым из стандартного потока ввода. При отсутствии вхождений {} в начальных_аргументах аргумент дописывается в исходный список.

-n число_аргументов

Максимальное число аргументов, добавляемых в командную строку. Значение число_аргументов по умолчанию – 255.

-P n

(Расширение QNX Neutrino.) Использовать n параллельных команд. Значение по умолчанию – 1.

-s размер

Установить размер максимального буфера команд в символах, включая программу и начальный_аргумент. Значение размера по умолчанию – 4096.

-t

Выполнять отслеживание; выводить каждую программу в стандартный поток ошибок перед выполнением.

программа

Имя выполняемой программы. Программа должна быть найдена по пути, указанном в переменной среды PATH. Если программа не указана, по умолчанию выполняется утилита echo.

начальные_аргументы

Один или несколько аргументов программы, которые определяются при каждом выполнении программы.

-x

Завершить выполнение утилиты, если при использовании указанного числа_аргументов (или числа аргументов по умолчанию) длина командной строки превышает допустимую.

Описание:

Утилита 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

Статус завершения:

0

Все вызовы программы успешно завершены.

> 0

Возникла ошибка.