Shellscript: Verzeichnissstruktur

demagoo

Cadet 3rd Year
Registriert
Jan. 2009
Beiträge
43
Hallo Zusammen,

ich versuche mich gerade an den ersten Shellscripts/Programmierungen.

Zielsetzung soll sein das ich einfach und unkompliziert eine bestimmte Dateistruktur erstellen kann. Diese soll in einer Seperaten Datei aufgeschrieben sein. Leider funktioniert das ganze nur bedingt.

Hier erstmal der Code:
Code:
#!/bin/bash

for verz in `cat verzeichnisse.txt`
do
 mkdir -p -v $verz
done

Hier der inhalt aus "Verzeichnisse.txt"
Games
Games\Quake
Games\Quake\Maps

Leider sieht das Ergebniss so aus:
Code:
demagoo@linuxclient:~/scripts$ sh liste.sh
mkdir: created directory `Games'
mkdir: created directory `Games\\Quake'
mkdir: created directory `Games\\Quake\\Maps'

ls -la

drwxr-xr-x  5 demagoo demagoo 4096 Jan 28 10:27 .
drwxr-xr-x  7 demagoo demagoo 4096 Jan 28 10:11 ..
drwxr-xr-x  2 demagoo demagoo 4096 Jan 28 10:27 Games
drwxr-xr-x  2 demagoo demagoo 4096 Jan 28 10:27 Games\Quake
drwxr-xr-x  2 demagoo demagoo 4096 Jan 28 10:27 Games\Quake\Maps

Es sollte aber so sein das in dem Verzeichniss Games der Unterverzeichniss Quake ist, das wiederum das unterverzeichniss Maps enthält.
 
Kenn mich mit Shellscripten nicht aus, aber ich denke du musst es rekursiv programmieren.
Also obersten Ordner erstellen.
In den Ordner wechseln, und den Unterordner erstellen usw.
 
Ich denke UNIX arbeitet mit Slashes und nicht wie Windows mit Backslashes! Solltest das auf jeden Fall mal mit folgendem Versuchen.

Code:
Games
Games/Quake
Games/Quake/Maps
 
absolut richtig@1st Knight.

Das Erstellen des Ordner Games/Quake/Maps sollte auch schon reichen
 
Ah, ok, wusste nicht das -p für Rekursion steht.
Aber sag ja mit Shellscripten habe ich noch nie gearbeitet ;)
 
Man kann das ganze noch optimieren zu:

Code:
#!/bin/bash

while read i ; do
    mkdir -p -v $i
done < verzeichnisse.txt

Dann umgeht man die sinnlose Verwendung von cat. =)
 
Zurück
Oben