GNU/Linux >> Linux Esercitazione >  >> Linux

Come ruotare tutte le immagini in una directory con Imagemagick?

Voglio ruotare tutte le immagini in una directory che corrispondono a uno schema.

Finora ho:

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

ma questo non dà output?

Risposta accettata:

Ci sono alcuni problemi con il tuo codice. Prima di tutto, stai analizzando ls che è una cattiva idea. Devi anche fare riferimento alla variabile come $file come fai notare e dovresti anche citarlo in modo che non si rompa negli spazi. Stai dichiarando num ma non viene mai utilizzato. Un modo più sicuro sarebbe:

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

Questo avrà ancora problemi se i tuoi file contengono nuove righe, ma almeno non si interromperà se il tuo percorso contiene spazi.

Se i file si trovano tutti nella stessa directory, può essere ulteriormente semplificato utilizzando il globbing. Puoi anche usare l'espansione dei parametri per creare foo_rotated.JPG1 invece di foo.JPG_rotated.JPG :

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

Linux
  1. Come eliminare gli account utente con Home Directory in Linux

  2. Come creare una directory condivisa per tutti gli utenti in Linux

  3. Suggerimento rapido:converti le immagini dalla riga di comando con ImageMagick

  4. Come gestire gli utenti con useradd in Linux

  5. Come reinstallare tutti i pacchetti installati con Zypper?

Come verificare se un file o una directory esiste in Bash

Come eseguire tutti gli script in una directory in Linux

Come convertire in batch le immagini PNG in formato JPG in Linux

Come convertire le immagini JPG in PDF utilizzando il terminale

Come connettersi con Samba a Linux Active Directory

Come rinominare tutti i file con caratteri speciali e spazi in una directory?