GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausführen eines Befehls für jede Zeile in einer Textdatei

Sie haben also eine Textdatei wie diese:

file1
file2
..

Und Sie möchten in jeder Zeile der Datei einen Befehl ausführen (z. B. chmod 644). Wie bei allen Dingen unter UNIX gibt es mehr als eine Möglichkeit, etwas zu tun, aber hier ist die schnelle und schmutzige Antwort:

xargs -0 -n 1 chmod 644 < <(tr \\n \\0 <filelist.txt)

Dies führt also xargs auf dem Standard aus. input (filelist.txt).
-n ist max arguments – in diesem Fall haben wir 1 arg. (die Liste der Dateien in der Datei – pro Zeile).
-0 bedeutet, dass Eingabezeilen mit einem Nullzeichen abgeschlossen werden, nicht mit einem Leerzeichen, um die Dinge sauber zu halten.
Schließlich führen wir tr aus, was löscht Zeichen, in diesem Fall das Entfernen von Zeilenumbrüchen und Leerzeichen.


Linux
  1. Befehl für jede Datei im aktuellen Verzeichnis ausführen

  2. Ausführen eines Cron-Jobs unter Linux alle sechs Stunden

  3. PostgreSQL-CSV-Import über die Befehlszeile

  4. Wie ersetze ich eine Datei im JAR durch die Befehlszeile in Linux?

  5. Befehlszeilentool zum Identifizieren von Audiodateispezifikationen

Diff-Befehl in Linux mit Beispielen

Kopieren Sie eine Datei in mehrere Verzeichnisse von der Befehlszeile unter Linux

Zeigen Sie den Inhalt einer Datei in der Linux-Befehlszeile an

So extrahieren Sie die Tar.xz-Datei in der Linux-Befehlszeile

Ist es mit Gedit oder der Befehlszeile möglich, jede vierte Zeile einer Textdatei zu ändern?

5 Befehle zum Anzeigen des Inhalts einer Datei in der Linux-Befehlszeile