Vyhledávání na webu

Přejmenování – Nástroj příkazového řádku pro přejmenování více souborů v Linuxu


K přejmenování jednoho souboru v Linuxu často používáme příkaz „mv“. Nicméně, přejmenování více souborů nebo skupin rychle dělá to velmi obtížný úkol v terminálu.

Linux přichází s velmi výkonným vestavěným nástrojem zvaným přejmenování. Příkaz rename se používá k přejmenování více souborů nebo skupin souborů, přejmenování souborů na malá písmena, přejmenování souborů na velká písmena a přepsání souborů pomocí výrazů v perlu.

Příkaz „rename“ je součástí skriptu Perl a v mnoha distribucích Linuxu se nachází pod „/usr/bin/“. Můžete spustit příkaz „který“ a zjistit umístění příkazu pro přejmenování.

which rename
/usr/bin/rename
Základní syntaxe příkazu Rename
rename 's/old-name/new-name/' files

Příkaz rename je dodáván s několika volitelnými argumenty spolu s povinným výrazem perl, který vede příkaz rename k provedení skutečné práce.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v: Tisk názvů souborů, které byly úspěšně přejmenovány.
  2. -n: Zobrazí soubory, které by byly přejmenovány.
  3. -f: Vynutí přepsání existujících souborů.
  4. perlexpr: výraz v jazyce Perl.

Pro lepší pochopení tohoto nástroje jsme v článku probrali několik praktických příkladů tohoto příkazu.

1. Základní příklad příkazu přejmenování

Předpokládejme, že máte spoustu souborů s příponou „.html“ a chcete všechny soubory „.html“ přejmenovat na „.php“ na jeden zátah. Například nejprve zadáním „ls -l“ zkontrolujte seznam souborů s příponou „.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

Nyní chcete změnit příponu všech těchto souborů z „.html“ na „.php“. Můžete použít následující příkaz „rename“ s výrazem perl, jak je uvedeno níže.

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

Poznámka: Ve výše uvedeném příkazu jsme použili dva argumenty.

  1. První argument je perlovský výraz, který nahrazuje .html .php.
  2. Druhý argument říká příkazu rename, aby nahradil všechny soubory *.php.

Ověřte, zda jsou všechny soubory přejmenovány na příponu „.php“, pomocí příkazu ls -l na výzvu.

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

Nyní můžete výše vidět, že všechny soubory html jsou přejmenovány na php.

2. Před spuštěním příkazu Přejmenovat zkontrolujte změny

Při provádění kritických nebo hlavních úkolů přejmenování můžete změny vždy zkontrolovat spuštěním příkazu rename s argumentem „-n“. Parametr „-n“ vám přesně řekne, k jakým změnám dojde, ale ve skutečnosti se změny neprovádějí. Zde je příklad příkazu níže.

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

Poznámka: Výše uvedený výstup příkazu zobrazuje pouze změny, ale ve skutečnosti se změny neprovedou, pokud příkaz nespustíte bez přepínače „-n“.

3. Tisk výstupu přejmenování

Viděli jsme, že příkaz přejmenovat nezobrazuje žádné informace o změnách, které dělá. Pokud tedy chcete získat podrobnosti o příkazu přejmenování (jako jsme to udělali pomocí možnosti „-n“), zde použijeme možnost „-v“ k vytištění celého podrobnosti o všech změnách provedených příkazem rename úspěšně.

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. Převeďte všechna malá písmena na velká a obráceně

Chcete-li hromadně přejmenovat všechny soubory s názvy malými písmeny na velká písmena, chci například všechny následující soubory přejmenovat z malých na velký případ.

Malá písmena
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

Stačí použít následující příkaz s výrazem perl.

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

Po provedení výše uvedeného příkazu můžete změny zkontrolovat provedením „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

Můžete vidět, že výše uvedený příkaz ve skutečnosti přejmenoval všechny názvy souborů s malými písmeny (s příponou .HTML) na velká písmena.

Velká písmena

Podobně můžete také převést všechna velká písmena na malá písmena pomocí následujícího příkazu.

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. Velké první písmeno názvu souboru

Chcete-li použít velké pouze první písmeno každého souboru, použijte následující příkaz.


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

6. Přepsat existující soubory

Pokud chcete násilně přepsat existující soubory, použijte možnost „-f“, jak je uvedeno níže.

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

Pokud se chcete o příkazu rename dozvědět více, zadejte do terminálu „man rename“.

Příkaz rename je velmi užitečný, pokud řešíte vícenásobné nebo dávkové přejmenování souborů z příkazové řádky. Vyzkoušejte a dejte mi vědět, jak dalece je užitečné z hlediska přejmenování souborů.