Gennaio 1, 2022

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.

Gli esempi in questa guida vengono utilizzati per rinominare tutti i file nella directory di lavoro attuale. La maggior parte di questi comandi può essere facilmente ottimizzato per lavorare in modo ricorsivo. Si noti che alcuni esempi rinomineranno anche le directory.

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
Utilizzare i -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
Utilizzare i -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.

Apertura dell'utilità di rinomina di massa

Passaggio 2. Fare clic sul segno più per aggiungere i file che si desidera rinominare.

Aggiunta di un elenco di file all'applicazione Bulk Rename

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.

 Bulk Rename strumento che mostra i vecchi nomi e nuovi nomi di 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.

Finalizzazione del lavoro di rinomina 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.txta 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.