1 stycznia, 2022

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.

przykłady w tym przewodniku służą do zmiany nazw wszystkich plików w obecnym katalogu roboczym. Większość z tych poleceń można łatwo zmodyfikować, aby działała rekurencyjnie. Zauważ, że niektóre przykłady również zmienią nazwy katalogów.

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
użyj opcji -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
użyj opcji -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.

otwieranie narzędzia Bulk Rename

Krok 2. Kliknij znak plus, aby dodać pliki, które chcesz zmienić nazwę.

dodawanie listy plików do aplikacji zbiorczej zmiany nazwy

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.

masowe narzędzie zmiany nazwy pokazujące stare nazwy i nowe nazwy 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.

finalizacja zadania zbiorczej zmiany 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.txtna 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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.