Je veux faire pivoter toutes les images d'un répertoire qui correspondent à un motif.
Jusqu'à présent, j'ai:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
mais cela ne donne aucune sortie?
la source
Je veux faire pivoter toutes les images d'un répertoire qui correspondent à un motif.
Jusqu'à présent, j'ai:
for file in `ls /tmp/p/DSC*.JPG`; do
convert $file -rotate 90 file+'_rotated'.JPG
done
mais cela ne donne aucune sortie?
Il y a pas mal de problèmes avec votre code. Tout d'abord, vous analysez ls qui est une mauvaise idée . Vous devez également faire référence à la variable comme $file
vous le faites remarquer et vous devez également la citer pour qu'elle ne se casse pas sur les espaces. Vous déclarez num
mais il n'est jamais utilisé. Un moyen plus sûr serait:
find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
convert "$file" -rotate 90 "$file"_rotated.JPG
done
Cela aura toujours des problèmes si vos fichiers contiennent des sauts de ligne mais au moins ne se cassera pas si votre chemin contient des espaces.
Si les fichiers sont tous dans le même répertoire, il peut être encore simplifié en utilisant la globalisation. Vous pouvez également utiliser l'expansion des paramètres pour créer foo_rotated.JPG1
au lieu de 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"
. l'ajout"${file%.JPG}"_rotated.JPG
sera à mon humble avis plus approprié. À votre santé!mogrify -rotate 90 *.jpg
Le meilleur One-Liner pour faire pivoter toutes les images avec imagemagickmogrify -rotate 90 /tmp/p/DSC*.JPG
va en fait tourner tout en.JPG
commençant parDSC
dans lep
répertoireMogrify (qui fait partie d'imagemagick) diffère du
Convert
fait qu'il modifie le fichier d'origine http://www.imagemagick.org/script/mogrify.phpla source
Une méthode simple utilisant PE (Parameter Expansion) est
la source
bash
spécifique là-dedans, c'est une syntaxe POSIX sh parfaitement standard.Ne pas analyser
ls
et lels
n'est pas requis ici. De plus, vous devez citer vos variables au cas où elles contiennent des espaces.la source
Pas une solution imaginaire, mais
fera pivoter toutes les images se terminant par .JPG à 90 degrés. C'est une bonne doublure.
la source
Je devais me référer au fichier comme
$file
, c.-à-d.la source
Vous pouvez copier / coller ce code dans ubuntu, et l'enregistrer sous "rotation.sh"
Après avoir enregistré ce fichier, exécutez-le à partir du terminal en utilisant
./rotate.sh folder_containing_images
la source