On 03/16/2011 10:56 PM, Christian Brabandt wrote:
Hi Achim!
On Mi, 16 Mär 2011, Achim Theobald wrote:
ich steh hier vor folgenden, allerdings nicht OSS spezifischen, Problemen.
Ich habe zb. folgende Verzeichnisstruktur in der Bilder liegen. Diese möchte ich nun mittels convert verkleinern (Die alten Bilder sollen erhalten bleiben).
/home/Test.User/Pictures/Bilder_1 |- Bilder_2 |- Bilder_3/und_noch_tiefer.
Grundsätzlich funktioniert das mittels "find . -iname "*.jpg" -type f -execdir /usr/bin/convert -resize 2000x1500 {} {}_2000.jpg \;"
Problem 1. Wenn der Orignaldateiname lautet 12345.JPG dann heißt das File hinterher halt 12345.JPG_2000.jpg. Ok, kann ich damit leben das "jpg" zweimal drin vorkommt. Ist halt nicht "schön".
Problem 2, das größere. Wie erreiche ich das die alte Verzeichnisstruktur "dupliziert" und in ein neues Verzeichnis als Startordner verwendet wird. Also sollte das hinterher so aussehen und alle konvertieren Files dort abgelegt werden.
/home/Test.User/Pictures/small/Bilder_1 |- Bilder_2 |- Bilder_3/und_noch_tiefer.
Any suggestions?
ungetestet:
~$ export newpath="/tmp" ~$ find /mnt/ -type f -name "*.jpg" -exec sh -c ' for i; do a="$newpath${i%/*}"; b="${i##*/}" b="${b%%.*}" test -d "$a" || mkdir -p "$a"; convert -resize 2000x1500 "$i" "$a/$b.jpg"; done' sh {} +
wichtig ist nur, dass die Pfadangabe für find absolut ist. Sonst klappt die Parameter-Expansion nicht hin und es wird Fehler geben.
Mit freundlichen Grüßen Christian
Hallo Christian, Ich Danke Dir! Das ist ein sehr schöner Denkansatz für mich gewesen. Auf die Idee die bash mittels -exec aufzurufeb und dann darin alles zu machen, wäre ich nie gekommen. Cu Achim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org