Ich habe die ganze Nacht gegoogelt, um einen Weg zu finden, ein Skript zu erstellen, das eine Verzeichnisstruktur erstellt. Das sieht ungefähr so aus:
%Vor%Sie verstehen es.
Die Datei, aus der das Skript liest, sieht folgendermaßen aus:
%Vor% Ich möchte ein Skript erstellen, das jede Zeile in der Datei liest und für jede Zeile Folgendes ausführt:
Wenn das Verzeichnis existiert, legt es sich selbst in das Verzeichnis und erstellt von dort die Struktur, falls
Das Verzeichnis existiert nicht, erstellen Sie es.
Wenn alle Einträge in der Zeile vorangestellt wurden, gehen Sie zurück zum ursprünglichen Verzeichnis und lesen Sie die nächste Zeile.
Mein System ist Ubuntu 10.10.
Bisher habe ich das gemacht, aber es funktioniert nicht.
%Vor% Sie können mkdir -p shared/projects/movies/action
verwenden, um den gesamten Baum zu erstellen: Er erstellt shared
, dann shared/projects
, dann shared/projects/movies
und shared/projects/movies/action
.
Im Grunde brauchen Sie ein Skript, das mkdir -p $dir
ausführt, wobei $dir
das Blattverzeichnis Ihrer Verzeichnisstruktur ist.
Wenn struct.txt
die Verzeichnisstruktur enthält, die Sie erwähnen, dann führen Sie einfach:
sed
entfernt leere Zeilen und die restlichen Zeilen sehen wie Verzeichnispfade aus.
xargs
nimmt jede Zeile und übergibt sie als Parameter an mkdir
.
mkdir
macht das Das Verzeichnis und das Flag -p
erstellen ggf. übergeordnete Verzeichnisse.
1) Tun Sie so etwas
%Vor%, um eine Liste der Ordner zu erstellen, die Sie erstellen müssen.
2) Übertragen Sie die Liste an Ihr Ziel
3) Erstellen Sie die Struktur an Ihrem neuen Standort neu:
%Vor%Beachten Sie, dass Sie die Option "-p" in diesem Fall nicht benötigen, auch wenn es nicht schaden würde.
Angenommen, Sie möchten einen Baum von Ordnern / Verzeichnissen wie folgt erstellen:
%Vor%
Auch vorausgesetzt, Sie haben eine Variable, die die Verzeichnisnamen erwähnt.
DOMAIN_NAME=includes,docs
Sie können den folgenden Befehl eingeben:
$ eval "mkdir -p tmpdir/{trunk/sources/{${DOMAIN_NAME}},branches,tags}"
Hinweis: verwenden Sie die BASH-Version, die die Erweiterung geschweifter Klammern unterstützt.
Tags und Links linux bash if-statement