Ich versuche, einen Verzeichnisbaum von A bis Z zu erstellen, in dem sich das nächste Verzeichnis im aktuellen Verzeichnis befindet.
Zum Beispiel: B ist innerhalb von A und C ist innerhalb von B und so weiter.
-A
--B
---C
----...Z
Irgendwelche Hinweise, wie man es automatisiert macht?
command-line
directory
Nish
quelle
quelle
mkdir -p
" gefunden werden können.)Antworten:
Mit
mkdir
,printf
und bash Klammer Expansion:{A..Z}
erweitert sich zuA B ... Z
,printf "%s/"
druckt die Argumente mit einem/
nach ihnen aus, damit ich bekommeA/B/...Z/
mkdir -p
erstellt dasA/B/.../Z
Verzeichnis mit allen übergeordneten Verzeichnissen, die erstellt werden müssen.quelle
-p
immkdir
Befehl.Auf der sehr einfachen Ebene können Sie die
{A..Z}
Erweiterung verwenden, um den gesamten Buchstaben zu generieren, und dann iterativ jeden einzelnen erstellen und eingeben:Wie Sie in meiner Eingabeaufforderung sehen können, haben Sie jetzt das Verzeichnis vollständig verkettet.
Wenn sich die tatsächlichen Verzeichnisnamen jedoch von nur dem Alphabet unterscheiden, müssen Sie die Liste der Verzeichnisnamen irgendwie bereitstellen, möglicherweise über eine Datei, über die Sie iterieren und denselben Vorgang erneut ausführen. Grundsätzlich ist dies
quelle
for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done
for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done
tree
bin ich nicht sicher , wie das zu beheben, aber ich denke , das könnte nicht einmal seintree
‚s Problem, sondern Shell Sortierung. Ich würde vorschlagen, hier oder besser noch auf unix.stackexchange.comAuch wenn Murus
printf
Weg nicht zu übertreffen ist, mag ich persönlich sojot
etwas.jot
ist in Ubuntu nicht standardmäßig installiert. Dasathena-jot
Paket bietet es. Jeder dieser Befehle funktioniert:Wirklich jeder Befehl, der die Folge von Buchstaben erzeugt und sie mit Schrägstrichen verbindet, erleichtert dies, da seine Ausgabe dann
mkdir -p
entweder durch Befehlssubstitution (wie in Murus Antwort ) oder durch Verwendung an übergeben werden kannxargs
. Hier sind einige Beispiele mit einigen Toolsxargs
, für die Sie keine Software installieren müssen, außer vielleicht auf sehr minimalen Systemen oder Ubuntu Core:Alte Ubuntu-Versionen werden mit Python 2 anstelle von Python 3 geliefert. Wechseln Sie
python3
dazu einfach zupython
, damit der letzte Befehl funktioniert, wenn Sie dies wirklich mit Python tun möchten.Ebenso kann alternativ Murus kurzer und einfacher Weg geschrieben werden:
Das Trailing
/
im Verzeichnispfadmkdir -p
, das erstellt werden soll, ist kein Problem und ist stilistisch wohl vorzuziehen. Aber es ist in Ordnung, es wegzulassen, wie es die anderen Beispiele in dieser Antwort tun.quelle