Ich denke, dies sind die gebräuchlichen Methoden, um das Ergebnis eines Befehls als Eingaben an den nächsten zu übergeben.
Wie arbeiten diese drei? Oder was sind einige Websites / URLs?
Erste Dinge zu tippen:
man find
man xargs
Der find
Befehl gibt die Ergebnisse standardmäßig in der Standardausgabe aus, sodass die -print
Option normalerweise nicht erforderlich ist. -print0
Die Dateinamen werden jedoch durch ein 0-Byte (NULL) getrennt, damit Namen, die Leerzeichen oder Zeilenumbrüche enthalten, korrekt interpretiert werden können.
Die -exec
Option ist etwas , das man anstelle von xargs verwenden können - der Befehl find führt einen Befehl für jedes Element es findet.
Der xargs
Befehl liest durch Leerzeichen oder Zeilenumbrüche getrennte Zeichenfolgen (normalerweise aus dem Befehl " find" , sie können jedoch von überall stammen) und führt für jede Zeichenfolge einen Befehl aus.
Wenn xargs mit der Option -0 ausgeführt wird , werden durch NULL getrennte Zeichenfolgen als Ausgabe von erwartetfind ... -print0
Der Vorteil von xargs besteht darin, dass es die Zeichenfolgen gruppieren kann, sodass ein Befehl nur ein- oder zweimal anstelle von n- mal ausgeführt wird.
Also im normalen Gebrauch:
find start_directory -name '*.txt' | xargs ls -l
find listet die Dateinamen auf und xargs gibt Befehle aus wie:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
Dies ist schneller, als wenn Sie den Befehl find ausgeben:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
Beachten Sie, dass xargs bei aktuellen Suchimplementierungen, die wahrscheinlich alle diese POSIX-Syntax unterstützen, nicht mehr benötigt wird:
find directory -name '*.txt' -exec ls -l {} +
Das ist einfacher und etwas schneller als die xargs-Variante.
find directory -name '*.txt' | xargs ls -l
Siehe die folgenden Artikel:
Linux und Unix finden ein Tutorial mit Beispielen für
xargs: So steuern und verwenden Sie Befehlszeilenargumente
quelle