Wenn ich mehrere Verzeichnisse (auf der gleichen Ebene) erstellen und dann eine durch Kommas getrennte Liste von Verzeichnisnamen (oder etwas in diesem Sinne) einspeisen wollte?
command-line
directory
coreutils
mkdir
BGroat
quelle
quelle
man mkdir
....man
gefolgt vom Namen des Befehls ein.man mkdir
"Art von" die Möglichkeit nahe legt, mehrere Verzeichnisse gleichzeitig zu erstellen, wird weder speziell erwähnt, noch wie dies getan werden soll....
Nachher[DIRECTORY]
, was bedeutet, dass das Argument wiederholt werden kann. SoDIRECTORY(ies)
bezieht sich auf alle übergebenDIRECTORY
Argumente. In "RTFM" -Kommentaren wird jedoch manchmal vergessen, dass eine Notation zu lernen ist.Antworten:
Kurze Antwort
mkdir
braucht mehrere Argumente, einfach ausführenquelle
Sie können Listen verwenden, um Verzeichnisse zu erstellen, und es kann ziemlich wild werden.
Einige Beispiele, um die Leute zum Nachdenken zu bewegen:
test01
bistest10
.Wenn ich es richtig verstanden habe und Sie einige Verzeichnisse und in diesen neue Verzeichnisse erstellen möchten, können Sie dies tun:
und erhalte sa1, sa2, ..., sa10 und in jedem Verzeichnis 1, 2 und 3.
quelle
dash
die Standardeinstellung ist/bin/sh
.mkdir sa$(seq 0.1 0.1 1)
muss nur ein Verzeichnis mit dem Namen sa0.1 und der Rest mit den Nummern 0.2, 0.3, ..., 1 erstellt werden. Wie kann ich die Dezimalklammer erweitern, ohne die gesamte Liste zu schreiben?Es ist sehr einfach, können Sie eine Verzeichnisstruktur erstellen, wie zum Beispiel:
Sie können dies mit einem einzigen Befehl tun:
Achten Sie darauf, keine Leerzeichen einzugeben
quelle
Erstellen Sie eine Liste der Namen für Ihre gewünschten Verzeichnisse, indem Sie Zeilenumbrüche anstelle von Kommas als Trennzeichen verwenden. Speichern Sie diese Liste.
Sie sollten jetzt alle benannten Verzeichnisse in Ihrer Liste haben.
quelle
spaced dir
, werden zwei Verzeichnissespaced
und `dir erstellt.junk\ dir
in derlist
Datei gibt es zwei Verzeichnissejunk\
unddir
. Hat mich in Panik versetzt, als ich einen\
in einem Verzeichnisnamen sah .-p
in anderen Antworten erwähnten Flagge kombiniert werden . Wenn dies derlist
Fall ist , muss die Datei keine übergeordneten Verzeichnisse als eigene Zeilen enthalten, sie werden erkannt und automatisch erstellt.Etwas wie das? (danke an muru für den tipp
printf
)Sie können es zur Vereinfachung der Verwendung in eine Funktion einbinden:
quelle
printf "%s" "$1" | xargs -d, mkdir
sollte genug sein.Sie möchten also eine durch Kommas getrennte Liste von Verzeichnisnamen? Das kann man machen.
Shell + Coreutils
Da alle Oneliner posten, ist hier auch meins (mkdir + Parametersubstitution plus + Shell-Umleitung).
AWK
AWK ist eine Textverarbeitungssprache, hat jedoch eine sehr schöne
system()
Funktion, die die Standard-Shell aufruft und die in Klammern gesetzten Befehle ausführt (dies muss eine Zeichenfolge sein).Oder Sie könnten
,
mitgsub()
function entfernen und aufrufen,system("mkdir "$0)
aber das kann ein Problem sein, wenn Sie Verzeichnisse mit Leerzeichen im Namen erstellen möchtenPython
Eine pythonische Methode wäre, jede Zeile zu lesen, das Nachziehen zu
\n
beenden, alles in eine Liste zu verschieben und die Listenelemente zu durchlaufen und Verzeichnisse pro Listenelement zu erstellen. Beachten Sie, dass im folgenden Beispiel/home/xieerqi/dirList.txt
der vollständige Pfad zu meiner Datei angegeben ist. Der vollständige Pfad jedes neuen Verzeichnisses wird durch Verknüpfen der Zeichenfolge/home/username/
und des aus der Liste gelesenen Verzeichnisnamens gebildet. Ersetzen Sie Ihre eigenen Werte nach Bedarfquelle
dir{1..1000}
. B. keine große Liste erstellt werden kann . Angenommen, Sie möchten ein Verzeichnis pro Benutzername oder pro Projekt oder pro geografischem OrtDer Befehl mkdir akzeptiert mehrere Argumente, die einfach wie folgt ausgeführt werden
Wenn Sie mehrere Unterverzeichnisse erstellen möchten, können Sie dieses Argument wie unten gezeigt in {} übergeben (verwenden Sie nur Kommas, um das Argument ohne Leerzeichen zu trennen).
quelle