Ich möchte alle Bilder in einem Verzeichnis drehen, die einem Muster entsprechen.
Bisher habe ich:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
aber das gibt keine ausgabe?
quelle
Ich möchte alle Bilder in einem Verzeichnis drehen, die einem Muster entsprechen.
Bisher habe ich:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
aber das gibt keine ausgabe?
Es gibt einige Probleme mit Ihrem Code. Zunächst analysieren Sie ls, was eine schlechte Idee ist . Sie müssen auch auf die Variable verweisen, $file
wie Sie es hervorheben, und Sie sollten sie auch in Anführungszeichen setzen, damit sie bei Leerzeichen nicht unterbrochen wird. Sie erklären, num
aber es wird nie verwendet. Ein sicherer Weg wäre:
find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
convert "$file" -rotate 90 "$file"_rotated.JPG
done
Dies wird immer noch Probleme haben, wenn Ihre Dateien Zeilenumbrüche enthalten, aber zumindest nicht, wenn Ihr Pfad Leerzeichen enthält.
Wenn sich alle Dateien im selben Verzeichnis befinden, kann dies durch Globbing weiter vereinfacht werden. Sie können auch Parameter Erweiterung zum Erstellen foo_rotated.JPG1
statt foo.JPG_rotated.JPG
:
for file in /tmp/p/DSC*.JPG; do
convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG
done
original_filename.JPG_rotated.JPG"
. Hinzufügen"${file%.JPG}"_rotated.JPG
wird besser geeignet sein, imho. Prost!mogrify -rotate 90 *.jpg
Der bessere Einzeiler zum Drehen aller Bilder mit imagemagickmogrify -rotate 90 /tmp/p/DSC*.JPG
dreht sich also alles.JPG
beginnend mitDSC
imp
VerzeichnisMogrify (ein Teil von imagemagick) unterscheidet sich
Convert
darin, dass es die Originaldatei http://www.imagemagick.org/script/mogrify.php ändertquelle
Eine einfache Methode mit PE (Parameter Expansion) ist
quelle
bash
Spezifisches gibt, es ist die vollkommen standardmäßige POSIX-sh-Syntax.Nicht analysieren
ls
und dasls
ist hier nicht erforderlich. Darüber hinaus sollten Sie Ihre Variablen in Anführungszeichen setzen, falls sie Leerzeichen enthalten.quelle
Keine imagemagische Lösung, aber
dreht alle Bilder, die mit .JPG enden, um 90 Grad. Es ist ein guter Einzeiler.
quelle
Ich musste mich auf die Datei beziehen als
$file
, dhquelle
Sie können diesen Code in Ubuntu kopieren / einfügen und als "rotate.sh" speichern.
Führen Sie diese Datei nach dem Speichern über das Terminal aus
./rotate.sh folder_containing_images
quelle