Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Detaillierte Erklärung der Verwendung von xargs unter Linux

Detaillierte Erklärung der Verwendung von xargs unter Linux

巴扎黑
巴扎黑Original
2017-08-22 13:57:522367Durchsuche

xargs ist ein sehr nützlicher Befehl in Linux. Er wird häufig in Kombination mit anderen Befehlen verwendet und ist sehr flexibel.

xargs ist ein Filter zum Übergeben von Parametern an Befehle und eine Möglichkeit zur Kombination Mehrere Befehle. Es teilt einen Datenstrom in Teile auf, die klein genug sind, um von Filtern und Befehlen verarbeitet zu werden. Im Allgemeinen schlägt das Ersetzen von Befehlen fehl , das Ersetzen durch xargs gelingt normalerweise. xargs liest Daten aus einer Pipe oder stdin, kann aber auch Daten aus der Ausgabe einer Datei lesen Eingaben, die über die Pipe an xargs übergeben werden, enthalten Zeilenumbrüche und Leerzeichen, aber durch die Verarbeitung von xargs werden Zeilenumbrüche und Leerzeichen durch Leerzeichen ersetzt. Beispiel:

bash$ ls -l

total 0

-rwxr-xr-x 2 root root 4096 2009-02-23 090218.txt

-rwxr-xr-x 2 root root 12288 2009-06-08 090607 .txt

bash$ ls -l |. xargs

090218.txt 090607.txt

bash$ find ~/mail -type f |./misc:User-Agent: slrn/0.9.8.1 (Linux)

./sent-mail-jul-2005: gehostet vom Linux Documentation Project

: (Linux-Dokumentation Projektseite, RTF-Version)

./sent-mail-jul-2005: Betreff: Kritik an Bozos Windows/Linux-Artikel

ls |. p -l gzip Verwenden Sie gzips, um jede Datei im aktuellen Verzeichnis einzeln zu komprimieren, und fordern Sie den Benutzer vor jeder Komprimierung auf.

Hinweis: a Die interessante xargs-Option ist -n NN, die die Anzahl begrenzt Anzahl der jeweils übergebenen Parameter.

ls |. xargs -n 8 echo listet alle Dateien im aktuellen Verzeichnis in Form von 8 Spalten pro Zeile auf , kombiniert mit find -print0 oder grep -lZ Dies ermöglicht die Verarbeitung von Argumenten, die Leerzeichen oder Anführungszeichen enthalten 🎜>

grep -rliwZ GUI / |. Löschen Sie alle Dateien, die „GUI“ enthalten.

-i bedeutet, dass das an xargs übergebene Ergebnis durch {} ersetzt wird.

-I Ich denke, es ähnelt i. Man kann denken, dass -i durch -I ersetzt werden kann {}

-p fordert y interaktiv auf, jede Ausführung des Befehls zu bestätigen.

-t gibt jeden Befehl vor der Ausführung wieder

Es gibt auch die Parameter -s und -x.

Das Folgende ist ein weiteres Beispiel um den Inhalt dieser Dateien zu berechnen:

$ file * | 47853 alarm_DBA102.log

19 dba102_cjq0_14493.trc

29053 dba102_mmnl_14497.trc

154 dba102_reco_14491.trc

43 dba102_rvwr_1 4518.trc

77122 total

(Hinweis: Die oben genannten Aufgaben können auch mit dem folgenden Befehl ausgeführt werden:)

$ wc -l 'file * | |. grep ASCII |. cut -d":" -f1'

Diese xargs-Version wird zur Veranschaulichung von Konzepten verwendet. Linux kann dieselbe Aufgabe auf verschiedene Arten erledigen; verwenden Sie die Methode, die am besten zu Ihrer Situation passt.

Mit dieser Methode können Sie Dateien in einem Verzeichnis schnell umbenennen.

$ ls |. xargs -t -i mv {} {}.bak

Die Option -i weist xargs an, {} durch den Namen jedes Elements zu ersetzen. Die Option -t weist xargs an, den Befehl vor der Ausführung auszudrucken.

Eine weitere sehr nützliche Operation ist, wenn Sie vi verwenden, um eine Datei zum Bearbeiten zu öffnen:

$ file * | ":" -f1 |. xargs vi

Dieser Befehl verwendet vi, um Dateien einzeln zu öffnen. Dieser Befehl ist sehr praktisch, wenn Sie mehrere Dateien durchsuchen und zur Bearbeitung öffnen möchten.

Es gibt auch mehrere Optionen. Am nützlichsten ist wahrscheinlich die Option -p, die den Vorgang interaktiv macht:

$ file * | >

vi warning_DBA102.log dba102_cjq0_14493.trc dba102_mmnl_14497.trc

dba102_reco_14491.trc dba102_rvwr_14518.trc ?...

xarg hier erfordert Bestätige es. Wenn Sie „y“ drücken, wird der Befehl ausgeführt. Diese Option kann hilfreich sein, wenn Sie etwas mit einer Datei tun, die möglicherweise beschädigt und nicht wiederhergestellt werden kann, z. B. wenn Sie sie löschen oder überschreiben.

Die Option -t verwendet einen ausführlichen Modus; sie zeigt die auszuführenden Befehle an und ist eine sehr hilfreiche Option beim Debuggen.

Was passiert, wenn die an xargs übergebene Ausgabe leer ist? Betrachten Sie den folgenden Befehl:

$ file * |. cut -d":" -f1 | in Hier ergibt die Suche nach „SSSSSS“ keine Treffer; daher ist die Eingabe in xargs leer, wie in der zweiten Zeile gezeigt (aufgrund unserer Verwendung der Option -t verbose). Dies kann zwar hilfreich sein, in einigen Fällen möchten Sie jedoch möglicherweise xargs stoppen, wenn nichts verarbeitet werden muss. In diesem Fall können Sie die Option -r verwenden:

$ file * |. " -f1 | xargs -t -r wc -l $

Wenn nichts zum Ausführen vorhanden ist, wird der Befehl beendet.

Angenommen, Sie möchten eine Datei mit dem Befehl rm löschen (der als Argument an den Befehl xargs übergeben wird). Allerdings kann rm nur eine begrenzte Anzahl von Argumenten akzeptieren. Was passiert, wenn Ihre Parameterliste diesen Grenzwert überschreitet? Die Option -n von xargs begrenzt die Anzahl der Argumente in einer einzelnen Befehlszeile.

Im Folgenden wird gezeigt, wie jede Befehlszeile auf nur zwei Argumente beschränkt wird: Obwohl xargs ls -ltr fünf Dateien übergeben werden, werden jeweils nur zwei Dateien gleichzeitig an ls -ltr übergeben.

$ file * | 19:18 dba102_cjq0_14493.trc

-rw-r--r-- 1 oracle dba 2410225 13. August 05:31 alarm_DBA102.log

ls -ltr. dba102_mmnl_1449 7. trc dba102_reco_14491.trc

-rw-r----- 1 oracle dba 5386163 10. August 17:55 dba102_mmnl_14497.trc

-rw-r----- 1 oracle dba 6808 13. Aug. 05:21 dba102_reco_14491.trc

ls -ltr dba102_rvwr_14518 .trc

-rw-r----- 1 oracle dba 2087 10. Aug. 04:30 dba102_rvwr_14518.trc

Mit dieser Methode können Sie Dateien im Verzeichnis schnell umbenennen.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Verwendung von xargs unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn