Rinominare file in massa su macOS dal Terminale

Rinominare file in massa macOS Terminale è possibile con zsh senza installare applicazioni aggiuntive. Il metodo più sicuro consiste nel preparare un modello, visualizzare in anteprima i nomi risultanti e solo dopo eseguire la modifica. macOS usa zsh come shell predefinita nelle versioni moderne del sistema, quindi gli strumenti necessari sono già disponibili. Il comando zmv gestisce sostituzioni di testo, estensioni e sequenze di nomi rispettando anche spazi e caratteri speciali. Prima di procedere conviene lavorare nella cartella corretta e controllare sempre che nessun nuovo nome sia già occupato.

Come preparare zsh per rinominare i file

Apri Terminale da Applicazioni > Utility oppure tramite Spotlight e raggiungi la cartella che contiene i file. Il comando cd cambia la directory corrente; trascinare una cartella nella finestra del Terminale dopo aver scritto cd inserisce automaticamente il percorso corretto.

cd ~/Desktop/Foto

Per controllare il contenuto della cartella puoi usare ls -la. Il comando mostra anche i file nascosti, ma non modifica alcun elemento.

ls -la

zsh include l’autocomando zmv, che deve essere caricato nella sessione corrente prima dell’uso. L’opzione -U evita alcune sostituzioni indesiderate e -z utilizza la funzione già definita nella configurazione della shell.

autoload -Uz zmv

Il comando zmv usa due modelli: il primo seleziona i nomi esistenti, mentre il secondo costruisce il nuovo nome. Le parti racchiuse tra parentesi nel modello di origine diventano riferimenti come $1, $2 e così via nel modello di destinazione.

Come visualizzare l’anteprima prima della rinomina

L’opzione -n esegue una simulazione e stampa le operazioni senza rinominare i file. Questa anteprima è il passaggio più importante per evitare errori, soprattutto quando il modello coinvolge molte immagini o documenti.

Per cambiare l’estensione da .jpeg a .jpg nella cartella corrente, usa:

zmv -n '(*).jpeg' '$1.jpg'

Un file chiamato vacanza-01.jpeg verrebbe trasformato in vacanza-01.jpg, ma con -n il nome rimane invariato. Le virgolette impediscono a zsh di interpretare prematuramente parentesi e caratteri speciali.

Per modificare una parte comune del nome, ad esempio sostituire il prefisso IMG_ con foto_, usa:

zmv -n 'IMG_(*)' 'foto_$1'

Il modello seleziona file come IMG_1001.jpg e propone foto_1001.jpg. La sintassi non limita automaticamente l’operazione ai soli file con estensione .jpg; per restringere la selezione è sufficiente includere l’estensione nel primo modello.

zmv -n 'IMG_(*)'.jpg 'foto_$1.jpg'

Per aggiungere un prefisso a tutti i file .png, il modello può catturare il nome completo senza estensione e ricostruirlo nella destinazione:

zmv -n '(*).png' 'archivio_$1.png'

zmv -n mostra le coppie vecchio nome e nuovo nome, permettendo di verificare il risultato prima dell’esecuzione effettiva. Se l’anteprima è corretta, rimuovi soltanto -n e ripeti lo stesso comando.

zmv '(*).png' 'archivio_$1.png'

Come evitare sovrascritture e collisioni

Una rinomina in serie può fallire o produrre risultati inattesi quando il nome di destinazione esiste già. Per ottenere una conferma interattiva prima di ogni operazione puoi aggiungere -i.

zmv -i 'IMG_(*)'.jpg 'foto_$1.jpg'

Con -i, zsh chiede conferma per le operazioni interessate. Questa modalità è più lenta, ma adatta a cartelle con pochi file o a una prima esecuzione.

Per nomi potenzialmente ambigui, esegui prima una simulazione e controlla in particolare:

  • file con lo stesso nome dopo la trasformazione;
  • estensioni scritte in maiuscolo, come .JPG invece di .jpg;
  • file nascosti, che i modelli normali non selezionano;
  • nomi già dotati del prefisso o suffisso che vuoi aggiungere;
  • collegamenti simbolici e file protetti da permessi insufficienti.

I modelli di zsh distinguono normalmente tra maiuscole e minuscole. Per gestire sia .jpg sia .JPG puoi attivare temporaneamente l’opzione nocaseglob, ma è preferibile usarla soltanto dopo aver controllato l’elenco selezionato.

setopt nocaseglob
zmv -n '(*).jpg' '$1.webp'
unsetopt nocaseglob

Questa procedura non converte il contenuto delle immagini: modifica soltanto il testo dell’estensione. Rinominare .jpg in .webp non trasforma il formato del file e può causare problemi nelle applicazioni che leggono l’estensione.

Come usare un ciclo zsh per controlli personalizzati

Quando serve saltare i file già esistenti, aggiungere condizioni o costruire nomi più complessi, un ciclo zsh offre un controllo maggiore rispetto a zmv. Il qualificatore N evita l’errore “nessuna corrispondenza” quando la cartella non contiene file .jpeg.

Il seguente esempio prepara un’anteprima senza eseguire modifiche:

files=( ./*.jpeg(N) )

for f in "${files[@]}"; do
new="${f%.jpeg}.jpg"
print -r -- "$f -> $new"
done

L’espressione ${f%.jpeg} rimuove soltanto il suffisso .jpeg dal percorso originale. Le virgolette mantengono intatti spazi, parentesi e altri caratteri presenti nei nomi.

Dopo aver verificato l’elenco, puoi aggiungere un controllo che salta le destinazioni già occupate:

files=( ./*.jpeg(N) )

for f in "${files[@]}"; do
new="${f%.jpeg}.jpg"

if [[ -e "$new" || -L "$new" ]]; then
print -r -- "Saltato: $new esiste già"
continue
fi

mv "$f" "$new"
done

Il test -e controlla l’esistenza della destinazione, mentre -L rileva anche un collegamento simbolico non più valido. Il comando mv viene eseguito solo quando il nuovo nome non è già presente.

Per aggiungere un prefisso ai file che iniziano con DSC_, mantenendo il resto del nome, puoi usare:

files=( ./DSC_*(N) )

for f in "${files[@]}"; do
base="${f#./}"
new="./archivio_${base}"

if [[ -e "$new" || -L "$new" ]]; then
print -r -- "Saltato: $new esiste già"
continue
fi

mv "$f" "$new"
done

Questo ciclo gestisce correttamente gli spazi nei nomi perché lavora su un array zsh e racchiude i percorsi tra virgolette. Il percorso ./ evita inoltre ambiguità con nomi che iniziano con un trattino.

Come lavorare in sicurezza su macOS

Prima di rinominare file importanti, crea una copia della cartella con Finder oppure su un’unità esterna. Il comando mv cambia i nomi direttamente e non offre un cestino o una cronologia automatica delle operazioni.

Per annullare una trasformazione semplice puoi costruire un secondo modello inverso, ma il recupero non è sempre possibile quando esistono collisioni o nomi modificati più volte. Una copia di sicurezza resta quindi il metodo più affidabile.

Evita di eseguire questi comandi in cartelle di sistema come /System, /Library o /usr. Per i documenti personali usa percorsi sotto la tua cartella utente, ad esempio ~/Documenti, ~/Desktop o ~/Downloads.

La sequenza consigliata è sempre la stessa: entrare nella cartella, selezionare un modello ristretto, eseguire zmv -n, controllare l’anteprima, creare una copia di sicurezza e infine rimuovere -n oppure usare il ciclo con controllo delle destinazioni. Con questo approccio, rinominare file in massa macOS Terminale diventa un’operazione ripetibile e verificabile.

FAQ

Sì. zsh è la shell predefinita delle versioni moderne di macOS, quindi non serve installarla separatamente per usare i comandi descritti.

No. L’opzione -n esegue soltanto una simulazione e mostra le operazioni previste. La rinomina effettiva avviene rimuovendo -n.

Sì. zmv e il ciclo zsh mostrato usano modelli e variabili racchiusi tra virgolette, quindi gli spazi vengono mantenuti correttamente.

Usa zmv -i per chiedere conferma oppure il ciclo zsh con i test -e e -L, che saltano le destinazioni già presenti.

No. Rinominare un file da .jpeg a .jpg modifica solo il nome; per convertire il formato serve un’applicazione o uno strumento specifico.

Altri articoli di questa serie:

PDF Strumenti PDF gratis Nel browser, senza upload Apri gli strumenti