
Ich habe eine Liste, die so aussieht, in einer Datei mit dem Namen names.txt
:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
Gibt es ein Skript, das ich im Terminal ausführen kann, um aus jeder Zeile dieser Liste Ordner zu erstellen?
Antwort1
Es gibt eine einfache Möglichkeit, einen Befehl für jede Zeile einer Textdatei auszuführen. Dazu ist kein Skript erforderlich, was für einen einzelnen Befehl wie übertrieben wäre mkdir
. Verwenden Sie den xargs
Befehl folgendermaßen:
xargs -tI % mkdir % < names.txt
Die -I
Option weist an, xargs
für jede Zeile von einen Befehl auszuführen STDIN
. In diesem Fall stammt STDIN vom Lesen der names.txt
Datei mit < names.txt
. Das %
Zeichen ist ein Ersetzungsstring, der xargs
als Platzhalter für eine Zeile aus der Datei verwendet wird. Dies bedeutet, dass überall, wo im Befehl xargs
angezeigt wird , durch eine Zeile aus der Datei ersetzt wird.%
%
Die -t
Option bewirkt, xargs
dass jeder Befehl vor seiner Ausführung ausgedruckt wird. Dies ist nicht notwendig, kann aber bei komplizierteren Problemen hilfreich sein.
Bei xargs
Ausführung mit der Beispieldatei sieht die Ausgabe folgendermaßen aus:
johannes doe mkdir JANE DOE mkdir ADAM SMITH mkdir Sarah Brown mkdir Susie Johnson
und die mkdir
Befehle erstellen einen neuen Ordner mit den Namen aus der names.txt
Datei.