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
.JPGinvece 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:
- Mostrare file nascosti macOS Terminale: comando rapido
- Disattivare riapertura finestre macOS: metodo rapido
- Personalizzare anteprime icone Finder con defaults
- Percorso completo Finder macOS nella barra del titolo
- Disattivare DS_Store unità di rete Mac: metodo rapido
- Ricerca metadati Spotlight Terminale con mdls e mdfind
- Ricostruire indice Spotlight macOS Terminale
- Controllare consumo energetico Mac Terminale con powermetrics
- Trovare i processi che rallentano il Mac da Terminale
- Controllare la pressione memoria macOS Terminale
- Come misurare l’avvio lento delle app su Mac
- Leggere log macOS da Terminale: comandi utili
- Rapporto processi bloccati macOS spindump: come crearlo
- Verificare firma applicazioni macOS Terminale
- Permessi privacy delle app Mac: come controllarli
- Gestire programmi avvio automatico macOS con launchctl
- Creare servizio launchd macOS per attività periodiche
- Confrontare cartelle macOS Terminale con diff
- Proteggere file sensibili su macOS dal Terminale
