"mit Namen, die aus der Standardeingabe gelesen wurden" bedeutet, dass xargsdie in der Standardeingabe eingehenden Daten übernommen, aufgeteilt und zum Ausführen des in den Argumenten angegebenen Befehls verwendet werden. Standardmäßig wird es in Leerzeichen oder Zeilenumbrüche aufgeteilt und echomit so vielen Argumenten wie möglich gleichzeitig ausgeführt.
Die -0Option in Ihrem Beispiel weist xargsan, die Eingabe auf Null-Bytes anstelle von Leerzeichen oder Zeilenumbrüchen aufzuteilen. In Kombination mit find's' -print0können Dateinamen, die Leerzeichen oder Zeilenumbrüche enthalten, ordnungsgemäß behandelt werden.
Die -IOption ändert die Art und Weise, wie die neuen Befehlszeilen erstellt werden. Anstatt so viele Argumente wie möglich gleichzeitig hinzuzufügen, xargsnehmen Sie jeweils einen Namen aus der Eingabe, suchen Sie nach dem angegebenen Token ( {}hier) und ersetzen Sie diesen durch den Namen.
In Ihrem Beispiel {}ist es nicht in der Befehlsvorlage enthalten, die an übergeben xargswurde. Daher xargswird es angewiesen echo, für jeden Dateinamen, der von angegeben wird, einmal ohne Argument auszuführen find. Um dies zu sehen, lassen Sie Folgendes fallen wc:
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo
Sie sehen eine Reihe von Leerzeilen ... Vergleichen Sie dies mit
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo {}
und
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 echo
und
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0
um ein besseres Verständnis zu bekommen.