GNU/Linux >> Tutoriels Linux >  >> Linux

Comment faire pivoter toutes les images d'un répertoire avec Imagemagick ?

Je veux faire pivoter toutes les images d'un répertoire qui correspondent à un modèle.

Pour l'instant 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 ?

Réponse acceptée :

Il y a pas mal de problèmes avec votre code. Tout d'abord, vous analysez ls, ce qui est une mauvaise idée. Vous devez également faire référence à la variable en tant que $file comme vous le soulignez et vous devez également le citer afin qu'il ne se brise 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 retours à la 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, cela peut être encore simplifié en utilisant le globbing. 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

Linux
  1. Astuce :convertissez des images en ligne de commande avec ImageMagick

  2. Comment gérer les utilisateurs avec useradd sous Linux

  3. Comment réinstaller tous les packages installés avec Zypper ?

  4. Comment utiliser regex avec la commande find ?

  5. Comment trouver tous les fichiers avec un répertoire parent particulier sous Linux ?

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment exécuter tous les scripts dans un répertoire sous Linux

Comment convertir par lots des images PNG au format JPG sous Linux

Comment convertir des images JPG en PDF à l'aide du terminal

Comment se connecter avec Samba à Linux Active Directory

Comment renommer tous les fichiers avec des caractères spéciaux et des espaces dans un répertoire ?