Preimenuj - Alat naredbenog retka za preimenovanje više datoteka u Linuxu


Često koristimo naredbu "mv" za preimenovanje jedne datoteke u Linuxu. Međutim, preimenovanje više datoteka ili grupa datoteka brzo otežava posao u terminalu.

Linux dolazi s vrlo moćnim ugrađenim alatom koji se zove preimenovanje. Naredba preimenovanja koristi se za preimenovanje višestrukih ili grupa datoteka, preimenovanje datoteka u mala slova, preimenovanje datoteka u velika slova i prepisivanje datoteka pomoću izraza perl.

Naredba "preimenovati" dio je Perl skripte i nalazi se pod "/ usr/bin /" na mnogim Linux distribucijama. Možete pokrenuti naredbu "which" da biste saznali mjesto naredbe za preimenovanje.

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

Naredba za preimenovanje dolazi s nekoliko neobaveznih argumenata, zajedno sa obaveznim perl izrazom koji vodi naredbu za preimenovanje za obavljanje stvarnih poslova.

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

  1. -v: Ispis imena datoteka koje su uspješno preimenovane.
  2. -n: Prikaži koje bi datoteke bile preimenovane.
  3. -f: Prisilno prepisivanje postojećih datoteka.
  4. perlexpr: Perl Expression.

Da bismo bolje razumjeli ovu uslužnu uslugu, u članku smo razmotrili nekoliko praktičnih primjera ove naredbe.

1. Primjer osnovne naredbe za preimenovanje

Pretpostavimo da imate hrpu datoteka s nastavkom ".html" i želite odjednom preimenovati sve datoteke ".html" u ".php". Na primjer, prvo napravite "ls -l" da biste provjerili popis datoteka s nastavkom ".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

Sada želite promijeniti ekstenziju svih ovih datoteka iz ".html" u ".php". Možete upotrijebiti sljedeću naredbu "preimenovati" s perl izrazom kao što je prikazano dolje.

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

Napomena: U gornjoj naredbi koristili smo dva argumenta.

  1. Prvi argument je perl izraz koji zamjenjuje .html s .php.
  2. Drugi argument govori naredbi preimenovanja da sve datoteke zamijeni * .php.

Provjerimo jesu li sve datoteke preimenovane u ekstenziju ".php", radeći ls -l u odzivu.

[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

Sada gore možete vidjeti da su sve html datoteke preimenovane u php.

2. Provjerite promjene prije pokretanja naredbe za preimenovanje

Dok radite kritične ili glavne zadatke preimenovanja, uvijek možete provjeriti promjene pokretanjem naredbe za preimenovanje s argumentom "-n". Parametar "-n" točno će vam reći kakve bi se promjene dogodile, ali promjene nisu stvarne. Evo primjera naredbe u nastavku.

[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

Napomena: Gornji izlaz naredbe prikazuje samo promjene, ali u stvarnosti promjene se ne rade, osim ako naredbu ne pokrenete bez prekidača “-n”.

3. Ispis preimenuj izlaz

Vidjeli smo da naredba za preimenovanje ne prikazuje nikakve informacije o promjenama koje čini. Dakle, ako želite dobiti detalje naredbe za preimenovanje (kao što smo to učinili koristeći opciju "-n"), ovdje koristimo opciju "-v" za ispis kompletnih detalja svih promjena koje je naredba za preimenovanje uspješno izvršila.

[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 sve male u velike i Vise-Versa

Za skupno preimenovanje svih datoteka s malim slovima u velika slova. Na primjer, želim prikriti sve ove sljedeće datoteke od malih do velikih slova.

[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, upotrijebite sljedeću naredbu s perl izrazom.

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

Nakon što izvršite gornju naredbu, možete provjeriti promjene radeći "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

Možete vidjeti da je gornja naredba zapravo preimenovala sva mala imena datoteka (s nastavkom .HTML) u velika.

Slično tome, pomoću sljedeće naredbe možete pretvoriti i sve velike početne znakove u male.

[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. Veliko početno slovo naziva datoteke

Da biste napisali veliko početno slovo svakog imena datoteke, upotrijebite sljedeću naredbu.

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

6. Prepiši postojeće datoteke

Ako želite prisilno prebrisati postojeće datoteke, upotrijebite opciju "-f" kao što je prikazano u nastavku.

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

Ako želite znati više o naredbi za preimenovanje, upišite "man rename" u terminal.

Naredba preimenovanja vrlo je korisna ako imate posla s višestrukim ili skupnim preimenovanjem datoteka iz naredbenog retka. Pokušajte i javite mi koliko je korisno u smislu preimenovanja datoteka.