Ricerca nel sito web

Rinomina: uno strumento da riga di comando per rinominare più file in Linux


Utilizziamo spesso il comando "mv" per rinominare un singolo file in Linux. Tuttavia, rinominare rapidamente più o gruppi di file rende il compito molto difficile in un terminale.

Linux è dotato di uno strumento integrato molto potente chiamato rinomina. Il comando rinomina viene utilizzato per rinominare più o gruppi di file, rinominare file in minuscolo, rinominare file in maiuscolo e sovrascrivere file utilizzando espressioni Perl.

Il comando “rename” fa parte dello script Perl e risiede in “/usr/bin/” su molte distribuzioni Linux. Puoi eseguire il comando "quale" per scoprire la posizione del comando di ridenominazione.

which rename
/usr/bin/rename
La sintassi di base del comando Rinomina
rename 's/old-name/new-name/' files

Il comando rename viene fornito con pochi argomenti facoltativi insieme all'espressione perl obbligatoria che guida il comando rename a svolgere il lavoro vero e proprio.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v: stampa i nomi dei file rinominati con successo.
  2. -n: mostra quali file sarebbero stati rinominati.
  3. -f: forza la sovrascrittura dei file esistenti.
  4. perlexpr: espressione Perl.

Per una migliore comprensione di questa utilità, abbiamo discusso alcuni esempi pratici di questo comando nell'articolo.

1. Un esempio di comando di ridenominazione di base

Supponiamo che tu abbia un sacco di file con estensione ".html" e desideri rinominare tutti i file ".html" in ".php" in una volta sola. Ad esempio, esegui prima "ls -l" per controllare l'elenco dei file con estensione ".html".

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

Ora, vuoi cambiare l'estensione di tutti questi file da ".html" a ".php". Puoi utilizzare il seguente comando "rinomina" con l'espressione perl come mostrato di seguito.

ravisaive@tecmint:~$ rename 's/\.html$/\.php/' *.html

Nota: nel comando precedente abbiamo utilizzato due argomenti.

  1. Il primo argomento è un'espressione perl che sostituisce .html con .php.
  2. Il secondo argomento dice al comando rename di sostituire tutti i file con *.php.

Verifichiamo se tutti i file sono stati rinominati con l'estensione “.php”, eseguendo ls -l al prompt.

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.php
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.php
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.php
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.php
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.php
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.php
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.php

Ora puoi vedere sopra che tutti i file html sono stati rinominati in php.

2. Controllare le modifiche prima di eseguire il comando di ridenominazione

Mentre svolgi attività di ridenominazione critiche o importanti, puoi sempre verificare le modifiche eseguendo il comando di ridenominazione con l'argomento "-n". Il parametro "-n" ti dirà esattamente quali modifiche avverrebbero, ma le modifiche non vengono apportate realmente. Ecco l'esempio del comando seguente.

ravisaive@tecmint:~$ rename -n 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

Nota: l'output del comando precedente mostra solo le modifiche, ma in realtà le modifiche non vengono eseguite, a meno che non si esegua il comando senza l'opzione "-n".

3. Stampa l'output di ridenominazione

Abbiamo visto che il comando rename non mostra alcuna informazione sulle modifiche apportate. Quindi, se desideri ottenere i dettagli del comando di ridenominazione (come abbiamo fatto utilizzando l'opzione "-n"), qui utilizziamo l'opzione "-v" per stampare il file completo dettagli di tutte le modifiche apportate correttamente dal comando rinomina.

ravisaive@tecmint:~$ rename -v 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

4. Converti tutte le lettere minuscole in maiuscole e viceversa

Per rinominare in batch tutti i file con nomi minuscoli in maiuscoli. Ad esempio, voglio convertire tutti questi file seguenti da minuscolo a maiuscolo.

Da minuscolo a maiuscolo
ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

Basta usare il seguente comando con l'espressione perl.

ravisaive@tecmint:~$ rename 'y/a-z/A-Z/' *.html

Una volta eseguito il comando precedente, puoi verificare le modifiche eseguendo "ls -l".

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 CRICKET.HTML
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 ENTERTAINMENT.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 HEALTH.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 LIFESTYLE.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 NEWS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 PHOTOS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 SPORTS.HTML

Puoi vedere che il comando precedente ha effettivamente rinominato tutti i nomi di file in minuscolo (con estensione .HTML) in maiuscolo.

Da maiuscolo a minuscolo

Allo stesso modo, puoi anche convertire tutti i caratteri maiuscoli in minuscoli utilizzando il seguente comando.

ravisaive@tecmint:~$ rename 'y/A-Z/a-z/' *.HTML
ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

5. Scrivere in maiuscolo la prima lettera del nome del file

Per scrivere in maiuscolo solo la prima lettera di ciascun nome file utilizzare il seguente comando.


rename 's/\b(\w)/\U$1/g' *.ext

6. Sovrascrivi i file esistenti

Se desideri sovrascrivere forzatamente i file esistenti, utilizza l'opzione "-f" come mostrato di seguito.

ravisaive@tecmint:~$ rename -f 's/a/b/' *.html

Se desideri saperne di più sul comando rinomina, digita "man rename" nel terminale.

Il comando rinomina è molto utile se hai a che fare con la ridenominazione multipla o batch di file dalla riga di comando. Fai una prova e fammi sapere quanto è utile in termini di ridenominazione dei file.