jak zmienić nazwy wielu plików jednocześnie na Linuksie
zmiana nazwy wielu plików na Linuksie brzmi jak proste zadanie, ale może być dość skomplikowane. Można masowo zmieniać nazwy plików za pomocą polecenia mv
i trochę skryptów Bash lub użyć narzędzi mmv
i rename
– które nie są domyślnie instalowane. W tym przewodniku pokażemy różne przykłady zmiany nazw wielu plików jednocześnie z wiersza poleceń Linuksa.
Zmień nazwy wielu plików za pomocą mv
polecenie mv
jest domyślną częścią Linuksa i może być używane do zmiany nazw wielu plików, ale do wykonania zadania wymagane jest trochę skryptów. Niektóre przykłady opierają się również na innych domyślnych narzędziach Linuksowych, takich jak ls
, find
, xargs
, itd.
przykład 1. Zmień wszystkie nazwy plików na małe litery.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
przykład 2. Zmień wszystkie nazwy plików na wielkie litery.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
przykład 3. Zmień wszystkie rozszerzenia plików z .jpeg
na .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
przykład 4. Usuń rozszerzenie pliku .bak
ze wszystkich plików.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
przykład 5. Dodaj rozszerzenie pliku .bak
do wszystkich plików.
$ for f in `ls`; do mv $f $f.bak; done
przykład 6. Użyj xargs
, aby dodać „_backup” do każdego pliku.
$ ls * | xargs -I{} mv {} {}_backup
przykład 7. Użyj poleceń find
, sed
i mv
, aby zmienić wszystkie pliki na małe litery.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
przykład 8. Użyj poleceń find -exec
i mv
, aby dodać „_backup” do każdego pliku kończącego się rozszerzeniem .log
.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
przykład 9. Podobnie jak w poprzednim przykładzie, ale zastąp opcję find -exec
opcją xargs
, aby dodać „_backup” do każdego pliku zakończonego rozszerzeniem .log
.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
przykład 10. Zastąp wzorzec w każdym pliku używając mv
i sed
. Spowoduje to zastąpienie „IMG” „wakacjami” w każdym pliku .jpg
.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
przykład 11. Dodaj bieżący znacznik czasu do wszystkich plików kończących się na .log
. Spowoduje to zmianę Pliku takiego jak access.log
na access_20210418040151.log
.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
Zmień nazwy wielu plików za pomocą Zmień nazwę
narzędzie Zmień nazwę sprawia, że nasze zadania związane z masową zmianą nazwy są nieco łatwiejsze, ale nie zawsze jest domyślnie instalowane. Użyj odpowiedniego polecenia poniżej, aby zainstalować go w menedżerze pakietów systemu.
Ubuntu, Debian i Linux Mint:
$ sudo apt install rename
Fedora, AlmaLinux, CentOS i RHEL:
$ sudo dnf install prename
Arch Linux i Manjaro:
$ sudo pacman -S perl-rename
-n
w poleceniach rename
, jeśli chcesz wyświetlić podgląd zmian przed ich wprowadzeniem.przykład 1. Zmień wszystkie nazwy plików na małe litery.
$ rename 'y/A-Z/a-z/' *
przykład 2. Zmień wszystkie nazwy plików na wielkie litery.
$ rename 'y/a-z/A-Z/' *
przykład 3. Usuń rozszerzenie .bak
ze wszystkich plików.
$ rename 's/\.bak$//' *.bak
przykład 4. Zmień rozszerzenie wszystkich plików .jpeg
na .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
przykład 5. Zmień rozszerzenie pisane wielkimi literami .JPG
na małe litery .jpg
dla wszystkich plików.
$ rename 's/\.JPG/\.jpg/' *.JPG
przykład 6. Usuń spacje ze wszystkich nazw plików.
$ rename "s/ *//g" *
przykład 7. Zamień spacje na podkreślniki dla wszystkich nazw plików.
$ rename 's/\s+/_/g' *
przykład 8. Wielką literę wszystkich nazw plików.
$ rename 's/\b(\w)/\U/g' *
przykład 9. Zastąp wzorzec w każdej nazwie pliku. Polecenie to zastąpi „IMG” na „Vacation” w każdym pliku .jpg
.
$ rename 's/IMG/Vacation/' *.jpg
przykład 10. Usuń część nazwy pliku. To polecenie usunie „IMG_” z KAŻDEGO pliku .jpg
.
$ rename 's/IMG_//' *.jpg
przykład 11. Dołącz rozszerzenie .bak
do wszystkich plików.
$ rename 's/(.*)/.bak/' *
Zmień nazwy wielu plików za pomocą mmv
narzędzie mmv wyróżnia się w zmienianiu nazw plików na podstawie wzorców, takich jak usuwanie lub dodawanie ciągów do wszystkich plików lub zmienianie części nazw plików. Zazwyczaj nie jest instalowany domyślnie, ale możesz użyć odpowiedniego polecenia poniżej, aby zainstalować mmv za pomocą menedżera pakietów systemu.
Ubuntu, Debian i Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS i RHEL:
$ sudo dnf install mmv
Arch Linux i Manjaro (instalacja z AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
w poleceniach mmv
, jeśli chcesz wyświetlić podgląd zmian przed ich wprowadzeniem. przykład 1. Zmień rozszerzenie wszystkich plików .jpeg
na .jpg
.
$ mmv '*.jpeg' '#1.jpg'
przykład 2. Zmień wszystkie nazwy plików na małe litery.
$ mmv '*' '#l1'
przykład 3. Zmień wszystkie nazwy plików na wielkie litery.
$ mmv '*' '#u1'
przykład 4. Zmiana kolejności części nazwy pliku. To polecenie zmieni pliki muzyczne ze wzorem Song-Artist.mp3
na Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
przykład 5. Zamień pierwsze wystąpienie „IMG” na „Vacation” we wszystkich nazwach plików.
$ mmv '*IMG*' '#1Vacation#2'
przykład 6. Dodaj prefiks do każdej nazwy pliku. To polecenie spowoduje dodanie „backup_” do każdego pliku .log
.
$ mmv '*.log' 'backup_#1.log'
przykład 7. Dodaj przyrostek do każdej nazwy pliku. To polecenie doda „_backup” do każdego pliku .log
.
$ mmv '*.log' '#1.log_backup'
przykład 8. Usuń prefiks „IMG_” ze wszystkich .jpg
plików.
$ mmv 'IMG_*.jpg' '#1'
przykład 9. Usuń przyrostek „_old” ze wszystkich plików.
$ mmv '*_old' '#1'
masowa zmiana nazw plików za pomocą GUI
jeśli linia poleceń nie jest naprawdę Twoja, możesz zmienić nazwy wielu plików naraz za pomocą GUI. Jednym z najlepszych narzędzi do tego zadania jest aplikacja masowa zmiana nazwy, która jest dostarczana z Thunar.
Thunar jest domyślną przeglądarką plików dla Xfce, ale możesz ją zainstalować niezależnie od tego, jakiego środowiska graficznego używasz. Jeśli używasz już Xfce lub Thunar, Bulk Rename jest już częścią Twojego systemu. W przeciwnym razie użyj odpowiedniego polecenia poniżej, aby zainstalować go w menedżerze pakietów systemu.
Ubuntu, Debian i Linux Mint:
$ sudo apt install thunar
Fedora, AlmaLinux, CentOS i RHEL:
$ sudo dnf install thunar
Arch Linux i Manjaro:
$ sudo pacman -S thunar
punkt 1. Po zainstalowaniu programu Thunar Wyszukaj i otwórz narzędzie masowa zmiana nazwy.
Krok 2. Kliknij znak plus, aby dodać pliki, które chcesz zmienić nazwę.
Krok 3. Wybierz z listy opcji, co chcesz zrobić z plikami. Możesz zmienić je wszystkie na wielkie lub małe litery, dodać datę i godzinę, wstawić tekst w określonej pozycji, dodać automatyczną numerację, zastąpić znaki lub wyszukać i zastąpić określone wzorce w nazwach plików, między innymi. W poniższym przykładzie dodaliśmy rozszerzenie .txt
do wszystkich naszych plików.
Krok 4. Po zakończeniu przeglądania zmian nazw w kolumnie „nowa nazwa” kliknij przycisk „Zmień nazwy plików”, aby wykonać masową zmianę nazwy.
zmiana nazwy wielu plików na WSL
jeśli używasz podsystemu Windows dla systemu Linux, niektóre powyższe polecenia nie będą działać, szczególnie te, które wymagają zmiany plików na małe lub wielkie litery. System Windows nie rozróżnia wielkości liter, dlatego File.txt
, file.txt
i FILE.txt
są tymi samymi plikami.
po prostu pojawi się błąd, że plik już istnieje, jeśli spróbujesz zmienić nazwę FILE.txt
na file.txt
. Aby uniknąć tego problemu, użyj jednego z poniższych przykładów.
przykład 1. Zmień rozszerzenie pisane wielkimi literami .JPG
na małe litery .jpg
dla wszystkich plików (przy użyciu domyślnych narzędzi).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
przykład 2. Zmień rozszerzenie pisane wielkimi literami .JPG
na małe litery .jpg
dla wszystkich plików (za pomocą narzędzia Zmień nazwę).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
przykład 3. Zmień rozszerzenie pisane wielkimi literami .JPG
na małe litery .jpg
dla wszystkich plików (za pomocą narzędzia mmv).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
przykład 4. Zmień wszystkie nazwy plików na małe litery (używając domyślnych narzędzi).
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
przykład 5. Zmień wszystkie nazwy plików na małe litery (używając narzędzia mmv).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
podsumowanie
możliwe jest użycie domyślnych narzędzi Bash dla wszystkich masowych zmian nazw w Linuksie, ale narzędzia zmiany nazwy i mmv znacznie ułatwiają. Możemy również użyć aplikacji masowej zmiany nazwy Thunara, gdy wolimy używać GUI zamiast wiersza poleceń. Przykłady zawarte w tym przewodniku obejmują szeroki zakres scenariuszy zmiany nazwy i można je łatwo dostosować do innych potrzeb.