"con nomi letti dall'input standard" significa che xargs
accetta i dati che arrivano sul suo input standard, li divide e li usa per eseguire il comando dato nei suoi argomenti. Per impostazione predefinita, si divide in spazi vuoti o newline e viene eseguito echo
con il maggior numero di argomenti alla volta.
L' -0
opzione nell'esempio indica xargs
di dividere l'input su byte null anziché su spazi vuoti o righe. Combinato con find
"s" -print0
, questo consente di gestire correttamente i nomi di file contenenti spazi vuoti o nuove righe.
L' -I
opzione cambia il modo in cui sono costruite le nuove linee di comando. Invece di aggiungere quanti più argomenti possibili alla volta, xargs
prenderà un nome alla volta dal suo input, cerca il token dato ( {}
qui) e sostituiscilo con il nome.
Nel tuo esempio, {}
non è presente nel modello di comando fornito xargs
, quindi in effetti xargs
viene eseguito per eseguire echo
senza argomenti, una volta per ogni nome file assegnato da find
. Per vedere questo, rilasciare il wc
:
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo
Vedrai una serie di righe vuote ... Confronta con
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo {}
e
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 echo
e
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0
per capire meglio.