Preimenuj - orodje ukazne vrstice za preimenovanje več datotek v Linuxu


V Linuxu pogosto uporabimo ukaz »mv« za preimenovanje ene datoteke. Vendar pa preimenovanje več datotek ali skupine datotek zelo oteži nalogo v terminalu.

Linux ima zelo zmogljivo vgrajeno orodje, imenovano preimenovanje. Ukaz za preimenovanje se uporablja za preimenovanje več datotek ali skupine datotek, preimenovanje datotek v male črke, preimenovanje datotek v velike črke in prepisovanje datotek z izrazi perl.

Ukaz "preimenuj" je del skripta Perl in je v številnih distribucijah Linuxa pod "/ usr/bin /". Zaženite lahko ukaz »kateri«, da ugotovite, kje je ukaz za preimenovanje.

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

Ukaz za preimenovanje je opremljen z nekaj neobveznimi argumenti in obveznim izrazom perl, ki vodi ukaz za preimenovanje za dejansko delo.

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

  1. -v: Natisni imena datotek, ki so bila uspešno preimenovana.
  2. -n: Prikažite, katere datoteke bi bile preimenovane.
  3. -f: Prisilno prepiši obstoječe datoteke.
  4. perlexpr: Perl Expression.

Za boljše razumevanje tega pripomočka smo v članku obravnavali nekaj praktičnih primerov tega ukaza.

1. Primer osnovnega preimenovanja ukaza

Recimo, da imate kup datotek s pripono .html in želite naenkrat preimenovati vse datoteke .html v ".php". Na primer, najprej naredite “ls -l”, da preverite seznam datotek s pripono “.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

Zdaj želite razširitev vseh teh datotek spremeniti iz ".html" v ".php". Uporabite lahko naslednji ukaz »preimenovanje« z izrazom perl, kot je prikazano spodaj.

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

Opomba: V zgornjem ukazu smo uporabili dva argumenta.

  1. Prvi argument je izraz perl, ki .html nadomesti z .php.
  2. Drugi argument pove ukazu za preimenovanje, da vse datoteke nadomesti z * .php.

Preverimo, ali so vse datoteke preimenovane v pripono .php, tako da v pozivu naredimo ls -l.

[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

Zdaj lahko zgoraj vidite, da so vse datoteke html preimenovane v php.

2. Preverite spremembe pred zagonom preimenovanja ukaza

Med izvajanjem kritičnih ali večjih nalog preimenovanja lahko spremembe vedno preverite tako, da zaženete ukaz za preimenovanje z argumentom -n. Parameter "-n" vam bo natančno povedal, do kakšnih sprememb bi prišlo, vendar spremembe niso resnično izvedene. Tu je primer spodnjega ukaza.

[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

Opomba: Zgornji izhod ukaza prikazuje samo spremembe, v resnici pa spremembe niso izvedene, razen če ukaz zaženete brez stikala “-n”.

3. Natisni preimenovanje izhoda

Videli smo, da ukaz za preimenovanje ne prikazuje nobenih informacij o spremembah, ki jih naredi. Torej, če želite dobiti podrobnosti o ukazu za preimenovanje (tako kot smo uporabili možnost »-n«), tukaj uporabimo možnost »-v« za natis celotnih podrobnosti vseh sprememb, ki jih je uspešno izvedel ukaz za preimenovanje.

[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. Pretvorite vse male črke v velike in velike verzije

Za paketno preimenovanje vseh datotek z malimi črkami v velike. Na primer, želim vse te naslednje datoteke prikriti iz malih v velike črke.

[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

Samo uporabite naslednji ukaz z izrazom perl.

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

Ko izvedete zgornji ukaz, lahko spremembe preverite tako, da naredite »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

Vidite lahko, da je zgornji ukaz pravzaprav preimenoval vsa majhna imena datotek (s pripono .HTML) v velike črke.

Podobno lahko tudi z velikimi črkami pretvorite v male črke z naslednjim ukazom.

[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. Uporabite veliko črko imena datoteke

Če želite uporabiti samo prvo črko vsakega imena datoteke, uporabite naslednji ukaz.

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

6. Prepiši obstoječe datoteke

Če želite na silo prepisati obstoječe datoteke, uporabite možnost “-f”, kot je prikazano spodaj.

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

Če želite izvedeti več o ukazu za preimenovanje, v terminalu vnesite “man rename”.

Ukaz za preimenovanje je zelo uporaben, če imate opravka z večkratnim ali paketnim preimenovanjem datotek iz ukazne vrstice. Poskusite in mi sporočite, kako daleč je koristno pri preimenovanju datotek.