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 ]
- -v: Tisk názvů souborů, které byly úspěšně přejmenovány.
- -n: Zobrazí soubory, které by byly přejmenovány.
- -f: Vynutí přepsání existujících souborů.
- 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.
- První argument je perlovský výraz, který nahrazuje .html .php.
- 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ů.