Canviar el nom: una eina de línia d'ordres per canviar el nom de diversos fitxers a Linux


Sovint fem servir l'ordre mv per canviar el nom d'un sol fitxer a Linux. No obstant això, canviar el nom de diversos fitxers o grups ràpidament fa que sigui una tasca molt difícil en un terminal.

Linux ve amb una eina integrada molt potent anomenada canviar el nom. L'ordre de canvi de nom s'utilitza per canviar el nom de diversos fitxers o grups, canviar el nom dels fitxers a minúscules, canviar el nom dels fitxers a majúscules i sobreescriure fitxers mitjançant expressions Perl.

L'ordre canviar el nom és una part de l'script Perl i resideix a /usr/bin/ a moltes distribucions de Linux. Podeu executar l'ordre quina per esbrinar la ubicació de l'ordre de canvi de nom.

$ which rename
/usr/bin/rename
rename 's/old-name/new-name/' files

L'ordre de canvi de nom inclou alguns arguments opcionals juntament amb una expressió perl obligatòria que guia l'ordre de canvi de nom per fer el treball real.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

  1. -v: imprimeix els noms dels fitxers reanomenats correctament.
  2. -n: mostra quins fitxers s'haurien canviat de nom.
  3. -f: Força sobreescriure els fitxers existents.
  4. perlexpr: expressió de Perl.

Per entendre millor aquesta utilitat, hem comentat alguns exemples pràctics d'aquesta comanda a l'article.

1. Un exemple bàsic d'ordres de canvi de nom

Suposem que teniu un munt de fitxers amb extensió .html i voleu canviar el nom de tots els fitxers .html a .php d'una vegada. Per exemple, primer feu un ls -l per comprovar la llista de fitxers amb l'extensió .html.

# [email :~$ 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

Ara, voleu canviar l'extensió de tots aquests fitxers de .html a .php. Podeu utilitzar la següent comanda canviar el nom amb l'expressió perl tal com es mostra a continuació.

[email :~$ rename 's/\.html$/\.php/' *.html

Nota: a l'ordre anterior hem utilitzat dos arguments.

  1. El primer argument és una expressió perl que substitueix .html per .php.
  2. El segon argument indica a l'ordre de canvi de nom que substitueixi tots els fitxers per *.php.

Verifiquem si tots els fitxers es canvien de nom a l'extensió .php, fent ls -l a la sol·licitud.

[email :~$ 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

Ara podeu veure més amunt que tots els fitxers html es canvien de nom a php.

2. Comproveu els canvis abans d'executar l'ordre Canvia el nom

Mentre feu tasques de canvi de nom crítiques o importants, sempre podeu comprovar els canvis executant l'ordre de canvi de nom amb l'argument -n. El paràmetre -n us indicarà exactament quins canvis tindrien lloc, però els canvis no es fan de veritat. Aquí teniu l'exemple de l'ordre següent.

[email :~$ 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: la sortida de l'ordre anterior només mostra els canvis, però en realitat els canvis no es fan, tret que executeu l'ordre sense l'interruptor -n.

3. Imprimeix la sortida de canvi de nom

Hem vist que l'ordre de canvi de nom no mostrava cap informació dels canvis que fa. Per tant, si voleu obtenir els detalls de l'ordre de canvi de nom (com vam fer amb l'opció -n), aquí fem servir l'opció -v per imprimir els detalls complets de tots els canvis fets per l'ordre de canvi de nom amb èxit.

[email :~$ 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. Converteix totes les minúscules a majúscules i Vise-Versa

Per canviar el nom de tots els fitxers amb noms en minúscules a majúscules. Per exemple, vull ocultar tots aquests fitxers següents de minúscules a majúscules.

[email :~$ 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

Només, utilitzeu l'ordre següent amb l'expressió perl.

[email :~$ rename 'y/a-z/A-Z/' *.html

Un cop hàgiu executat l'ordre anterior, podeu comprovar els canvis fent ls -l.

[email :~$ 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

Podeu veure que l'ordre anterior va canviar el nom de tots els noms de fitxers en minúscules (amb extensió .HTML) a majúscules.

De la mateixa manera, també podeu convertir tots els caràcters majúscules a minúscules mitjançant l'ordre següent.

[email :~$ rename 'y/A-Z/a-z/' *.HTML
[email :~$ 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. Posa en majúscula la primera lletra del nom del fitxer

Per posar en majúscula només la primera lletra de cada nom de fitxer, utilitzeu l'ordre següent.

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

6. Sobreescriu els fitxers existents

Si voleu sobreescriure a la força els fitxers existents, utilitzeu l'opció -f com es mostra a continuació.

[email :~$ rename -f 's/a/b/' *.html

Si voleu saber més sobre l'ordre de canvi de nom, escriviu canviar el nom de l'home al terminal.

L'ordre de canvi de nom és molt útil si esteu tractant amb canvis de nom múltiples o per lots de fitxers des de la línia d'ordres. Prova i fes-me saber fins a quin punt és útil pel que fa al canvi de nom dels fitxers.