GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo rotar todas las imágenes en un directorio con Imagemagick?

Quiero rotar todas las imágenes en un directorio que coincidan con un patrón.

Hasta ahora tengo:

for file in `ls /tmp/p/DSC*.JPG`; do
  convert $file -rotate 90 file+'_rotated'.JPG
done

pero eso no da salida?

Respuesta aceptada:

Hay bastantes problemas con su código. En primer lugar, está analizando ls, que es una mala idea. También debe referirse a la variable como $file como usted señala y también debe citarlo para que no se rompa en espacios. Estás declarando num pero nunca se usa. Una forma más segura sería:

find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
  convert "$file" -rotate 90 "$file"_rotated.JPG
done

Esto seguirá teniendo problemas si sus archivos contienen líneas nuevas, pero al menos no se interrumpirá si su ruta contiene espacios.

Si todos los archivos están en el mismo directorio, se puede simplificar aún más usando globbing. También puede usar la expansión de parámetros para crear foo_rotated.JPG1 en lugar de foo.JPG_rotated.JPG :

for file in /tmp/p/DSC*.JPG; do
  convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG
done

Linux
  1. Sugerencia rápida:convierta imágenes en la línea de comando con ImageMagick

  2. ¿Cómo eliminar todos los archivos con una extensión particular en una carpeta particular?

  3. ¿Cómo reinstalar todos los paquetes instalados con Zypper?

  4. Cómo encontrar todos los archivos con tamaño de archivo cero (0) bytes en un directorio recursivamente

  5. ¿Cómo usar expresiones regulares con el comando de búsqueda?

Cómo verificar si existe un archivo o directorio en Bash

Cómo ejecutar todos los scripts en un directorio en Linux

Cómo convertir por lotes imágenes PNG a formato JPG en Linux

Cómo convertir imágenes JPG a PDF usando la terminal

Cómo conectarse con Samba a Linux Active Directory

¿Cómo cambiar el nombre de todos los archivos con caracteres especiales y espacios en un directorio?