Команда, которая создает список аргументов для команды из текста, заданного в качестве стандартного ввода xargs (или считанного из указанного файла), таким образом позволяя, например, выполнить результаты поиска. Он предоставляется пакетом findutils
xargs
- команда для создания и выполнения команд из стандартного ввода. xargs
читает строки с разделителями и выполняет утилиты командной строки со строками в качестве аргументов.
Обычно для передачи строк в xargs
через стандартный вывод используется труба (|
).
Однако, xargs
может быть сказано читать из другого файла вместо стандартного ввода, передавая опцию --arg-file
или -a
, как показано, например, в этого ответа . Это делает удивительно универсальную утилиту.
xargs
предоставляется пакетом findutils
, который является частью установки Ubuntu по умолчанию во всех текущих версиях. Этот пакет также предоставляет find
. Две команды могут использоваться вместе, например:
find path tests | xargs commands
Поскольку xargs
обычно разделяется на пробелы, желательно передать ему списки с нулевым разделением и использовать флаг -0
: [ 1131]
find ... -print0 | xargs -0 ...
find
может выполнять команды для найденных файлов (либо со встроенными действиями, либо с использованием -exec
), поэтому xargs
может понадобиться редко с ним, но locate
не может выполнять команды по его результатам таким образом, xargs
может быть полезно с locate
, снова используя нулевое разделение, если имена файлов могут содержать пробелы:
locate -0 pattern | xargs -0 command
Возможность передавать альтернативные файлы в STDIN в xargs
позволяет использовать его за пределами классические обычаи, упомянутые выше. Например, вместо таких конструкций, как:
command $(cat file)
Мы можем использовать что-то вроде:
xargs -a file command