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 ]
- -v: Drukuje nazwy plików, których nazwy zostały pomyślnie zmienione.
- -n: Pokaż, jakie pliki miałyby zmienić nazwę.
- -f: Wymuś zastąpienie istniejących plików.
- 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.
- Pierwszym argumentem jest wyrażenie perla, które zastępuje .html .php.
- 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.