С чего начать Первые шаги трек · 15 ступеней
Linux Labs
К статье

xargs — построение аргументов из потока

шпаргалка · GNU findutils https://lab.dimsanych.ru/ru/wiki/xargs/

Шпаргалка

  • find . -name '*.x' -print0 | xargs -0 rm безопасно (пробелы)
  • ... | xargs -I{} cp {} /dst/ подстановка {}
  • ... | xargs -P4 -n1 cmd параллельно
  • ... | xargs -rt cmd не на пустом + показать
  • ... | xargs -n1 по одному аргументу

Ключи

Без -0 xargs разбивает вход по пробелам и переводам строк — имя файла с пробелом превратится в два отдельных аргумента. Безопасный путь — разделитель NUL на обеих сторонах конвейера: find -print0 (или grep -Z) вместе с xargs -0. -I {} неявно ограничивает вызов одним аргументом за раз, как -n1, потому что подставить сразу несколько значений в одно место нельзя.

bash
... | xargs -n1 cmd               # по одному аргументу за вызов
... | xargs -I{} cp {} /backup/   # подстановка {} (часто -I подразумевает -n1)
... | xargs -P4 -n1 cmd           # параллельно в 4 процесса
cat urls.txt | xargs -P8 -I{} curl -sO {}   # качать 8 в параллель
... | xargs -rt cmd               # не на пустом + показать команду
Загрузка…