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
Возникла
ошибка.