Команда xargs в Linux: собрать команду из ввода
Обновлено 3 июля 2026 г.
xargs берёт строки со стандартного ввода и подставляет их как аргументы другой команде.
Синтаксис
... | xargs [команда]Частые случаи
echo a b c | xargs mkdir # создать каталоги a, b, c
find . -name '*.tmp' | xargs rm # удалить все найденные .tmp
find . -name '*.log' -print0 | xargs -0 rm # безопасно с пробелами
cat urls.txt | xargs -n1 echo # по одному аргументу за раз
ls | xargs -I{} mv {} {}.bak # на место {} встанет имяКак это устроено: зачем xargs, если есть конвейер
Конвейер
|отдаёт вывод на стандартный ВВОД следующей команды. Но многие команды (rm,mkdir,cp) берут цели не из ввода, а из АРГУМЕНТОВ.xargsсоединяет одно с другим: читает строки и ставит их в конец команды как аргументы. Главная ловушка - пробелы и переносы в именах файлов. Безопасный способ:find ... -print0 | xargs -0, где имена разделены нулевым байтом, а не пробелом. Часто ту же работу делаетfind -exec, ноxargsзапускает команду реже и потому быстрее на больших списках.
В книге
Подробно эта тема разобрана в главе Потоки, перенаправление, конвейеры.
См. также
Конвейеры и фильтры, Команда find, Регулярные выражения.
Попробовать
Открой песочницу: настоящий одноразовый терминал Linux в браузере. Выполни команды выше своими руками - контейнер удаляется, когда ты уходишь.