ubuntuusers.de

Brauche Hilfe bei Bash-Skript

Status: Gelöst | Ubuntu-Version: Ubuntu 10.10 (Maverick Meerkat)
Antworten |

riddler16

Anmeldungsdatum:
22. März 2008

Beiträge: 36

Mahlzeit,

ich versuche grad etwas verzweifelt ein kleines Bash-Skript zu erstellen und bin mir sicher, dass ihr mir schnell helfen könnt, da es vermutlich nicht alzu schwierig sein sollte. Ich möchte folgendes tun: In einem Ordner habe ich viele Unterordner, die wiederum Unterordner haben usw...die Struktur sieht wie folgt aus:

./Oberordner
./Oberordner/A/bilder/a
./Oberordner/A/bilder/b
./Oberordner/B/bilder/a
./Oberordner/B/bilder/b
./Oberordner/C/bilder/a
usw.

Jetzt würde ich gerne für jedes Verzeichnis den Ordner "bilder" entfernen, da diese Ebene überflüssig ist. Des Weiteren würde ich gerne prüfen, ob z.B. der Ordner "b" existiert. Falls ja, soll dieser eine Ebene höher kopiert werden und "a" kann gelöscht werden. Falls dieser nicht existiert, soll "a" eine Ebene höher verschoben werden. Das soll natürlich für alle Verzeichnisse in "Oberordner" geschehen.

Da das vermutlich etwas wirsch klingt hier das Resultat was ich gerne hätte:

./Oberordner
./Oberordner/A/b
./Oberordner/B/b
./Oberordner/C/a

Hoffe ihr könnt mir da weiterhelfen.

Liebe Grüße und einen schönen 4ten Advent.

riddler16

(Themenstarter)

Anmeldungsdatum:
22. März 2008

Beiträge: 36

Ok vielleicht sollte ich erwähnen, dass ich schon einige Sachen ausprobiert habe wobei es hauptsächlich daran happert in die anderen Verzeichnisse zu gelangen.

Hier mal mein "Versuch"

1
2
3
4
5
6
7
for i in *; do
if [ -d $i ]; then
tmpdir=cd $i/bilder
fi
if [ -e $tmpdir/b ]; then
...
fi

So in etwa müsste es doch lauten oder? Es fehlt mir leider an den nötigen Bash-Kentnissen um das zu vervollständigen.

tillmo

Anmeldungsdatum:
3. Dezember 2006

Beiträge: 791

Wohnort: Bremen

Hier mal ein Einzeiler mittels find:

find Oberordner -name bilder -execdir bash -c "pwd; if [ -e bilder/b ]; then mv bilder/b . ; rm -r bilder/a ; else mv bilder/a . ; fi; rm -r bilder" \;

find durchsucht den angegebenen Ordner rekursiv; das scheint mir das einfachste zu sein.

riddler16

(Themenstarter)

Anmeldungsdatum:
22. März 2008

Beiträge: 36

Wow super! Das ist ja genau das was ich gesucht habe. Vielen Dank!

Antworten |