Wyszukiwanie w witrynie

Zmień nazwę - narzędzie wiersza poleceń do zmiany nazwy wielu plików w systemie Linux


Często używamy polecenia „mv”, aby zmienić nazwę pojedynczego pliku w Linuksie. Jednak szybka zmiana nazwy wielu plików lub grupy plików sprawia, że jest to bardzo trudne zadanie w terminalu.

Linux jest wyposażony w bardzo potężne wbudowane narzędzie o nazwie zmiana nazwy. Polecenie rename służy do zmiany nazwy wielu plików lub grupy plików, zmiany nazw plików na małe litery, zmiany nazw plików na wielkie litery i nadpisania plików przy użyciu wyrażeń Perla.

Polecenie „rename” jest częścią skryptu Perl i znajduje się w wielu dystrybucjach Linuksa w folderze „/usr/bin/”. Możesz uruchomić polecenie „które”, aby znaleźć lokalizację polecenia zmiany nazwy.

which rename
/usr/bin/rename
Podstawowa składnia polecenia Zmień nazwę
rename 's/old-name/new-name/' files

Polecenie zmiany nazwy zawiera kilka opcjonalnych argumentów wraz z obowiązkowym wyrażeniem Perla, które pomaga w wykonaniu polecenia zmiany nazwy.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v: Drukuje nazwy plików, których nazwy zostały pomyślnie zmienione.
  2. -n: Pokaż, jakie pliki miałyby zmienić nazwę.
  3. -f: Wymuś zastąpienie istniejących plików.
  4. perlexpr: wyrażenie Perl.

Aby lepiej zrozumieć to narzędzie, omówiliśmy w artykule kilka praktycznych przykładów tego polecenia.

1. Podstawowy przykład polecenia zmiany nazwy

Załóżmy, że masz kilka plików z rozszerzeniem „.html” i chcesz zmienić nazwę wszystkich plików „.html” na „.php” za jednym zamachem. Na przykład najpierw wykonaj „ls -l”, aby sprawdzić listę plików z rozszerzeniem „.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

Teraz chcesz zmienić rozszerzenie wszystkich tych plików z „.html” na „.php”. Możesz użyć następującego polecenia „zmień nazwę” z wyrażeniem perlowym, jak pokazano poniżej.

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

Uwaga: w powyższym poleceniu użyliśmy dwóch argumentów.

  1. Pierwszym argumentem jest wyrażenie perla, które zastępuje .html .php.
  2. Drugi argument mówi poleceniu rename, aby zastąpiło wszystkie pliki *.php.

Sprawdźmy, czy wszystkie pliki mają rozszerzenie „.php”, wykonując w wierszu poleceń ls -l.

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

Teraz możesz zobaczyć powyżej, że nazwy wszystkich plików html zostały zmienione na php.

2. Sprawdź zmiany przed uruchomieniem polecenia Zmień nazwę

Wykonując krytyczne lub duże zadania związane ze zmianą nazwy, zawsze możesz sprawdzić zmiany, uruchamiając polecenie zmiany nazwy z argumentem „-n”. Parametr „-n” powie dokładnie, jakie zmiany nastąpią, ale zmiany nie są dokonywane naprawdę. Oto przykład poniższego polecenia.

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

Uwaga: Powyższe polecenie wyświetla jedynie zmiany, ale w rzeczywistości zmiany nie zostaną wykonane, chyba że uruchomisz polecenie bez przełącznika „-n”.

3. Wydrukuj wynik zmiany nazwy

Zauważyliśmy, że polecenie zmiany nazwy nie wyświetlało żadnych informacji o wprowadzonych zmianach. Tak więc, jeśli chcesz uzyskać szczegóły polecenia zmiany nazwy (tak jak to zrobiliśmy przy użyciu opcji „-n”), tutaj używamy opcji „-v”, aby wydrukować cały szczegóły wszystkich zmian dokonanych pomyślnie poleceniem zmiany nazwy.

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. Konwertuj wszystkie małe litery na wielkie i odwrotnie

Aby zbiorczo zmienić nazwy wszystkich plików zawierających małe nazwy na duże litery. Na przykład chcę ukryć wszystkie poniższe pliki z małych na >wielkie litery.

Od małych do wielkich liter
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

Po prostu użyj następującego polecenia z wyrażeniem Perl.

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

Po wykonaniu powyższego polecenia możesz sprawdzić zmiany, wykonując „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

Jak widać, powyższe polecenie faktycznie zmieniło nazwy plików pisane małymi literami (z rozszerzeniem .HTML) na wielkie.

Od dużej do małej litery

Podobnie możesz także przekonwertować wszystkie wielkie litery na małe litery za pomocą następującego polecenia.

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. Pierwszą literę nazwy pliku pisz wielką literą

Aby używać wielkich liter tylko pierwszej litery każdej nazwy pliku, użyj następującego polecenia.


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

6. Zastąp istniejące pliki

Jeśli chcesz wymusić nadpisanie istniejących plików, użyj opcji „-f”, jak pokazano poniżej.

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

Jeśli chcesz dowiedzieć się więcej o poleceniu zmiany nazwy, wpisz „man rename” w terminalu.

Polecenie rename jest bardzo przydatne, jeśli masz do czynienia z wielokrotną lub zbiorczą zmianą nazw plików z wiersza poleceń. Spróbuj i daj mi znać, jak bardzo jest to przydatne w zakresie zmiany nazw plików.