«с именами, считанными из стандартного ввода» означает, что он xargs
берет данные, поступающие на его стандартный ввод, разделяет их и использует для запуска команды, указанной в его аргументах. По умолчанию он разделяется на пробелы или символы новой строки и работает echo
с максимально возможным количеством аргументов за раз.
-0
Вариант в вашем примере инструктирует , xargs
чтобы разделить его вход на нулевые байты , а не пробелами или символами новой строки. В сочетании с find
's' -print0
это позволяет правильно обрабатывать имена файлов, содержащие пробелы или переводы строк.
-I
Опция изменяет способ , построены новые командные строки. Вместо того, чтобы добавлять как можно больше аргументов за раз, xargs
будет брать одно имя за раз из своего ввода, искать данный токен ( {}
здесь) и заменять его на имя.
В вашем примере {}
его нет в шаблоне команды, заданной для xargs
, поэтому фактически xargs
он запускается echo
без аргументов, один раз для каждого имени файла, данного ему find
. Чтобы увидеть это, опустите wc
:
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo
Вы увидите серию пустых строк ... Сравните это с
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo {}
а также
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 echo
а также
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0
чтобы лучше понять.