• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] bash Ordnerproblem

Ghoost

Newbie
Guten Tag.
Also ich habe folgendes Problem:
Ich möchte von meinen Bildern Thumbnails erstellen lassen.
Da ich meine Bilder in verschiedenen Ordnern liegen habe soll das Skript in jedes einzeln gehen und dort von allen Bildern eine verkleinerte Version erstellen. (später soll das ganze noch in nen anderen Ordner, aber das ist nebensache)

Dazu habe ich folgenden Code:
for ordner in `find -type d`; do
basename $ordner;
cd $ordner;
for img in `ls *.jpg`; do
convert -thumbnail 120x90 $img thumb-$img
done
cd ..;
done
Wenn Bilder im selbem Ordner wie das Skript liegen, werden diese richtig verkleinert. Allerdings geht das Skript in keinen Ordner rein.
Kann mir einer helfen?
 
A

Anonymous

Gast
Wie du das versuchst, geht das voll in die Hosen, da du mit deinen cd-Kommandos immer weiter Richtung / wanderst und die Verzeichnisse dann so überhautpt nicht mehr auffindbar sind.

versuch mal folgendes
Code:
AKTUELL=$PWD
for VERZ in `find $AKTUELL -type d`
 do
   cd $VERZ
   pwd
 done
cd $AKTUELL
das dürfte jetzt nicht mehr abtrifften. Wenn das funktioniert dann erstetzt du pwd durch die innere Schleife.

Günstiger ist es allerdings alles in einer Schleife zu machen und mit vollem relativen Path die Dateien zu bearbeiten, Allerdings musst du dabei für die Zieldateien den Path vom Dateinamen trennen.

Such mal hier im Forum, wir hatten schon mehrfach solche Probleme und auch recht gute Lösungen dazu,
Stichworte zB "viele Datei umbenennen" "Bilder umbenennen"

robi
 
OP
G

Ghoost

Newbie
Egal. Leerzeichen hab ich in den Namen nicht drin :)
geht alles. Danke schön
Das ist jetzt der finale Code...
Code:
AKTUELL=$PWD
#echo aktuell: $AKTUELL
for VERZ in `find $AKTUELL -type d`
 do
   #echo verz: $VERZ
   cd $VERZ
	ORDNER=`basename $VERZ`
	#echo $ORDNER
	if `[ -d ~/bilder/thumbs/$ORDNER ]`; then 
		echo Der Ordner $ORDNER konnte nicht angelegt werden.
	else
		echo Der Ordner $ORDNER wurde angelegt
		mkdir ~/bilder/thumbs/$ORDNER
	fi
	 for IMG in `ls *.jpg`; do
 	     convert -thumbnail 120x90 $IMG ~/bilder/thumbs/$ORDNER/$IMG
	     echo Das Bild $IMG wurde kopiert
 	done
 done
cd $AKTUELL
 
Oben