Come rinominare più file contemporaneamente su Linux
Rinominare più file su Linux sembra un compito semplice, ma può diventare piuttosto complesso. È possibile rinominare in blocco i file con il comando mv
e un po ‘ di scripting Bash, o utilizzare le utilità mmv
e rename
, che non sono normalmente installate per impostazione predefinita. In questa guida, mostreremo vari esempi per rinominare più file contemporaneamente dalla riga di comando di Linux.
Rinomina più file con mv
Il comando mv
è una parte predefinita di Linux e può essere utilizzato per rinominare più file, ma è necessario un po ‘ di scripting per eseguire il lavoro. Alcuni esempi si basano anche su altre utilità Linux predefinite come ls
, find
, xargs
, ecc.
Esempio 1. Cambia tutti i nomi dei file in minuscolo.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
Esempio 2. Cambia tutti i nomi dei file in maiuscolo.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
Esempio 3. Cambia tutte le estensioni di file da .jpeg
a .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
Esempio 4. Rimuovere l’estensione .bak
da tutti i file.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
Esempio 5. Aggiungi un’estensione .bak
a tutti i file.
$ for f in `ls`; do mv $f $f.bak; done
Esempio 6. Usa xargs
per aggiungere “_backup” a ogni file.
$ ls * | xargs -I{} mv {} {}_backup
Esempio 7. Utilizzare i comandi find
, sed
e mv
per modificare tutti i file in minuscolo.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
Esempio 8. Utilizzare i comandi find -exec
e mv
per aggiungere “_backup” a ogni file che termina con l’estensione .log
.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
Esempio 9. Simile all’esempio precedente, ma sostituisci l’opzione -exec
di find con xargs
per aggiungere “_backup” a ogni file che termina con l’estensione .log
.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
Esempio 10. Sostituire un modello in ogni file utilizzando mv
e sed
. Questo sostituirà ” IMG “con” Vacation ” in ogni file .jpg
.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
Esempio 11. Aggiungi il timestamp corrente a tutti i file che terminano in .log
. Questo cambierebbe un file come access.log
a access_20210418040151.log
.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
Rinomina più file Con rinomina
L’utilità rinomina rende le nostre attività di ridenominazione di massa un po ‘ più semplici, ma l’utilità non è sempre installata per impostazione predefinita. Utilizzare il comando appropriato di seguito per installarlo con il gestore di pacchetti del sistema.
Ubuntu, Debian e Linux Mint:
$ sudo apt install rename
Fedora, AlmaLinux, CentOS, e RHEL:
$ sudo dnf install prename
Arch Linux e Manjaro:
$ sudo pacman -S perl-rename
-n
opzione rename
comandi, se si desidera visualizzare in anteprima le modifiche prima di farli.Esempio 1. Cambia tutti i nomi dei file in minuscolo.
$ rename 'y/A-Z/a-z/' *
Esempio 2. Cambia tutti i nomi dei file in maiuscolo.
$ rename 'y/a-z/A-Z/' *
Esempio 3. Rimuovere l’estensione .bak
da tutti i file.
$ rename 's/\.bak$//' *.bak
Esempio 4. Modificare l’estensione di tutti i file .jpeg
in .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
Esempio 5. Modificare l’estensione maiuscola .JPG
in minuscolo .jpg
per tutti i file.
$ rename 's/\.JPG/\.jpg/' *.JPG
Esempio 6. Rimuovere gli spazi vuoti da tutti i nomi dei file.
$ rename "s/ *//g" *
Esempio 7. Sostituire gli spazi vuoti con caratteri di sottolineatura per tutti i nomi di file.
$ rename 's/\s+/_/g' *
Esempio 8. Maiuscola la prima lettera di tutti i nomi dei file.
$ rename 's/\b(\w)/\U/g' *
Esempio 9. Sostituire un modello in ogni nome di file. Questo comando sostituirà ” IMG “con” Vacation ” in ogni file .jpg
.
$ rename 's/IMG/Vacation/' *.jpg
Esempio 10. Elimina parte di un nome di file. Questo comando rimuoverà “IMG_” da ogni file .jpg
.
$ rename 's/IMG_//' *.jpg
Esempio 11. Aggiungere l’estensione .bak
a tutti i file.
$ rename 's/(.*)/.bak/' *
Rinomina più file con mmv
L’utilità mmv eccelle nel rinominare i file in base a modelli, come rimuovere o aggiungere stringhe a tutti i file o riorganizzare parti dei nomi dei file. Di solito non è installato di default, ma è possibile utilizzare il comando appropriato di seguito per installare mmv con il gestore di pacchetti del sistema.
Ubuntu, Debian e Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS, e RHEL:
$ sudo dnf install mmv
Arch Linux e Manjaro (installare da AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
opzione mmv
comandi, se si desidera visualizzare in anteprima le modifiche prima di farli.Esempio 1. Modificare l’estensione di tutti i file .jpeg
in .jpg
.
$ mmv '*.jpeg' '#1.jpg'
Esempio 2. Cambia tutti i nomi dei file in minuscolo.
$ mmv '*' '#l1'
Esempio 3. Cambia tutti i nomi dei file in maiuscolo.
$ mmv '*' '#u1'
Esempio 4. Riorganizzare le parti di un nome di file. Questo comando cambierà i file musicali con pattern Song-Artist.mp3
a Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
Esempio 5. Sostituire la prima occorrenza di ” IMG ” con “Vacanza” in tutti i nomi di file.
$ mmv '*IMG*' '#1Vacation#2'
Esempio 6. Aggiungi un prefisso a ogni nome di file. Questo comando anteporrà “backup_” a ogni file .log
.
$ mmv '*.log' 'backup_#1.log'
Esempio 7. Aggiungi un suffisso a ogni nome di file. Questo comando aggiungerà “_backup” a ogni file .log
.
$ mmv '*.log' '#1.log_backup'
Esempio 8. Rimuovi il prefisso “IMG_” da tutti i file .jpg
.
$ mmv 'IMG_*.jpg' '#1'
Esempio 9. Rimuovi il suffisso “_old” da tutti i file.
$ mmv '*_old' '#1'
Rinominare i file in blocco tramite GUI
Se la riga di comando non è proprio la tua passione, è possibile rinominare più file contemporaneamente tramite GUI. Uno dei migliori strumenti per fare il lavoro è l’applicazione Bulk Rename che viene fornito con Thunar.
Thunar è il browser di file predefinito per Xfce, ma puoi installarlo indipendentemente dall’ambiente desktop che stai utilizzando. Se stai già utilizzando Xfce o Thunar, allora Bulk Rename è già parte del tuo sistema. In caso contrario, utilizzare il comando appropriato di seguito per installarlo con il gestore di pacchetti del sistema.
Ubuntu, Debian e Linux Mint:
$ sudo apt install thunar
I nostri prodotti sono di alta qualità e di alta qualità.:
$ sudo dnf install thunar
Arch Linux e Manjaro:
$ sudo pacman -S thunar
Punto 1. Dopo l’installazione di Thunar, cercare e aprire l’utilità di rinomina di massa.
Passaggio 2. Fare clic sul segno più per aggiungere i file che si desidera rinominare.
Passaggio 3. Scegli dall’elenco delle opzioni cosa vorresti fare con i file. Puoi cambiarli tutti in lettere maiuscole o minuscole, aggiungere una data e un’ora, inserire testo in una determinata posizione, aggiungere numerazione automatica, sostituire caratteri o cercare e sostituire determinati modelli nei nomi dei file, tra le altre cose. Nell’esempio seguente, abbiamo aggiunto un’estensione .txt
a tutti i nostri file.
Passo 4. Quando sei soddisfatto delle modifiche del nome visualizzate in anteprima nella colonna “Nuovo nome”, fai clic su” Rinomina file ” per eseguire la ridenominazione in blocco.
Rinominare più file su WSL
Se si utilizza il sottosistema Windows per Linux, alcuni comandi sopra riportati non funzioneranno, in particolare quelli che comportano la modifica dei file in minuscolo o maiuscolo. Windows è case-insensitive, quindi considera File.txt
, file.txt
e FILE.txt
per essere tutti lo stesso file.
Si otterrà semplicemente un errore che il file esiste già se si tenta di rinominare FILE.txt
a file.txt
. Per evitare questo problema, utilizzare uno dei seguenti esempi.
Esempio 1. Modificare l’estensione maiuscola .JPG
in minuscolo .jpg
per tutti i file (utilizzando le utilità predefinite).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
Esempio 2. Modificare l’estensione maiuscola .JPG
in minuscolo .jpg
per tutti i file (utilizzando rename utility).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
Esempio 3. Modificare l’estensione maiuscola .JPG
in minuscolo .jpg
per tutti i file (utilizzando mmv utility).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
Esempio 4. Modificare tutti i nomi dei file in minuscolo (utilizzando le utilità predefinite).
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
Esempio 5. Modificare tutti i nomi dei file in minuscolo (utilizzando mmv utility).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
Conclusione
È possibile utilizzare le utilità Bash predefinite per tutte le ridenominazioni di massa su Linux, ma gli strumenti rename e mmv lo rendono molto più semplice. Possiamo anche usare l’applicazione Bulk Rename di Thunar quando preferiamo usare la GUI sulla riga di comando. Gli esempi di questa guida coprono una vasta gamma di scenari di ridenominazione e possono essere facilmente adattati ad altre esigenze.