Come rinominare le immagini in blocco, in ordine numerico inverso?

5

La mia fotocamera nomina le sue immagini IMG_0001.jpg, IMG_0002.jpg, IMG_0003.jpg, ecc.

Ho circa mille immagini e vorrei rinominarle senza doverle fare manualmente se possibile.

Esiste un buon metodo per automatizzare il processo di ridenominazione nell'ordine inverso, ad es. IMG_0003.jpg, IMG_0002.jpg, IMG_0001.jpg?

    
posta Jason 18.10.2012 - 13:33
fonte

5 risposte

10

È possibile utilizzare un flusso di lavoro di Automator.

Qualcosa del genere:

Ordinamento elementi del Finder ordinerà i nomi delle immagini in ordine decrescente (IMG_0003.jpg, IMG_002.jpg, IMG_001.jpg).

Il comando Crea sequenziale li rinomina in sequenza (IMG_0001.jpg, IMG_0002.jpg, ...).

Copia elementi del Finder è facoltativo, solo per essere sicuro di non rovinare i file originali.

    
risposta data 18.10.2012 - 15:45
fonte
3

Ecco un altro script di shell. Puoi salvarlo come un normale file di testo e quindi eseguire bash /path/to/script.sh da Terminale. Rimuovi echo per rinominare effettivamente i file.

cd ~/Pictures/
IFS=$'\n' # the input field separators include space by default
i=1
for f in $(ls -r IMG*.jpg); do 
    echo mv "$f" "IMG_$(printf %04d $i)".jpg
    (( i++ ))
done
    
risposta data 19.10.2012 - 11:23
fonte
2

Name Mangler ($ 10 e ha una prova gratuita) o Name Changer (gratuito / donationware) è anche molto utile per questo genere di cose se cerchi un'app semplice e piacevole.

    
risposta data 18.10.2012 - 21:05
fonte
2

Prova questo nel Terminale:

mkdir new
ls IMG* > 1
sort -r < 1 > 2
paste 1 2 | awk '{ print "mv " $1 " new/" $2} ' > 3
. 3

I file rinominati si troveranno nella cartella new .

Ecco una breve spiegazione di come funziona: crea uno script chiamato 3 che esegue la ridenominazione. Per questo, crea un elenco delle immagini in ordine alfabetico in 1 e in ordine inverso in 2 . Quindi una riga viene letta da ciascun file e combinata in un comando mv , che viene eseguito quando si esegue 3 . Le immagini vengono rinominate nella cartella new per evitare collisioni.

    
risposta data 18.10.2012 - 13:41
fonte
1

Puoi usare lo script perl rename.pl che incombe sul web (ad esempio, da qui ) e inseriscilo nella cartella con i file immagine.

Il suo utilizzo è semplice e documentato ed è piuttosto potente. Per utilizzarlo per il tuo caso, sostituisci MAXIMUM_NUMBER con il numero nell'ultima foto, quindi esegui:

perl rename.pl 's/IMG_0+(\d+)/"A_IMG_".sprintf("%04d",(MAXIMUM_NUMBER- $1))/xe' *.jpg && perl rename.pl 's/A_//' *.jpg

Per spiegare:

  1. Il primo rinominare (prima di & &) ridenomicherà tutti i file a MAXIMUM_NUMBER meno il numero già presente nel nome del file. Precederà inoltre il nome del file con A_ per evitare di sovrascrivere i file già esistenti.
  2. La seconda rinomina cancella semplicemente A_ dai nomi dei file.

Nota che lo script rename.pl può fare molto di più se hai bisogno di rinominare più complessi.

    
risposta data 19.10.2012 - 11:58
fonte

Leggi altre domande sui tag