"con nombres leídos de la entrada estándar" significa que xargs
toma los datos que ingresan en su entrada estándar, los divide y los usa para ejecutar el comando dado en sus argumentos. Por defecto, se divide en espacios en blanco o nuevas líneas, y se ejecuta echo
con tantos argumentos a la vez como sea posible.
La -0
opción en su ejemplo le indica xargs
que divida su entrada en bytes nulos en lugar de espacios en blanco o líneas nuevas. Combinado con find
's -print0
, esto permite que los nombres de archivo que contienen espacios en blanco o líneas nuevas se manejen correctamente.
La -I
opción cambia la forma en que se crean las nuevas líneas de comando. En lugar de agregar tantos argumentos como sea posible a la vez, xargs
tomará un nombre a la vez de su entrada, busque el token dado ( {}
aquí) y reemplácelo con el nombre.
En su ejemplo, {}
no está presente en la plantilla de comando dada xargs
, por lo que en efecto xargs
se le indica que se ejecute echo
sin argumento, una vez por cada nombre de archivo que le haya dado find
. Para ver esto, suelte el wc
:
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo
Verás una serie de líneas en blanco ... Compara esto con
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo {}
y
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 echo
y
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0
para tener una mejor comprensión