cum să redenumiți mai multe fișiere simultan pe Linux
redenumirea mai multor fișiere pe Linux sună ca o sarcină simplă, dar poate deveni destul de complexă. Este posibil să redenumiți în bloc fișierele cu comanda mv
și un pic de script Bash sau să utilizați utilitățile mmv
și rename
– care nu sunt instalate în mod obișnuit în mod implicit. În acest ghid, vom arăta diverse exemple pentru redenumirea mai multor fișiere simultan din linia de comandă Linux.
redenumiți mai multe fișiere cu mv
comanda mv
este o parte implicită a Linux și poate fi utilizată pentru a redenumi mai multe fișiere, dar este necesară o mică scriptare pentru a face treaba. Unele exemple se bazează, de asemenea, pe alte utilitare Linux implicite, cum ar fi ls
, find
, xargs
, etc.
exemplu 1. Schimbați toate numele fișierelor cu litere mici.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
Exemplul 2. Schimbați toate numele fișierelor cu majuscule.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
Exemplul 3. Modificați Toate extensiile de fișiere de la .jpeg
la .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
Exemplul 4. Eliminați extensia de fișier .bak
din toate fișierele.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
exemplul 5. Adăugați o extensie de fișier .bak
la toate fișierele.
$ for f in `ls`; do mv $f $f.bak; done
exemplul 6. Utilizați xargs
pentru a adăuga „_backup” la fiecare fișier.
$ ls * | xargs -I{} mv {} {}_backup
exemplul 7. Utilizați comenzile find
, sed
și mv
pentru a schimba toate fișierele cu litere mici.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
exemplul 8. Utilizați comenzile find -exec
și mv
pentru a adăuga „_backup” la fiecare fișier care se termină cu extensia .log
.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
exemplul 9. Similar cu exemplul anterior, dar înlocuiți opțiunea find -exec
cu xargs
pentru a adăuga „_backup” la fiecare fișier care se termină cu extensia .log
.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
exemplul 10. Înlocuiți un model în fiecare fișier folosind mv
și sed
. Aceasta va înlocui „IMG” cu „vacanță” în fiecare fișier .jpg
.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
exemplu 11. Adăugați marcajul de timp curent la toate fișierele care se termină cu .log
. Acest lucru ar schimba un fișier, cum ar fi access.log
la access_20210418040151.log
.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
redenumiți mai multe fișiere cu redenumiți
utilitarul redenumiți face sarcinile noastre de redenumire în bloc un pic mai ușor, dar utilitarul nu este întotdeauna instalat în mod implicit. Utilizați comanda corespunzătoare de mai jos pentru a o instala cu managerul de pachete al sistemului.
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
din comenzile rename
dacă doriți să Previzualizați modificările înainte de a le efectua.Exemplul 1. Schimbați toate numele fișierelor cu litere mici.
$ rename 'y/A-Z/a-z/' *
Exemplul 2. Schimbați toate numele fișierelor cu majuscule.
$ rename 'y/a-z/A-Z/' *
Exemplul 3. Scoateți extensia .bak
din toate fișierele.
$ rename 's/\.bak$//' *.bak
Exemplul 4. Modificați extensia tuturor fișierelor .jpeg
la .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
exemplul 5. Modificați extensia majusculă .JPG
la minuscule .jpg
pentru toate fișierele.
$ rename 's/\.JPG/\.jpg/' *.JPG
exemplu 6. Eliminați spațiile goale din toate numele fișierelor.
$ rename "s/ *//g" *
exemplul 7. Înlocuiți spațiile goale cu subliniere pentru toate numele fișierelor.
$ rename 's/\s+/_/g' *
exemplul 8. Scrieți cu majuscule prima literă a tuturor numelor de fișiere.
$ rename 's/\b(\w)/\U/g' *
exemplul 9. Înlocuiți un model în fiecare nume de fișier. Această comandă va înlocui ” IMG „cu” vacanță ” în fiecare fișier .jpg
.
$ rename 's/IMG/Vacation/' *.jpg
exemplul 10. Ștergeți o parte a unui nume de fișier. Această comandă va elimina „IMG_” din fiecare fișier .jpg
.
$ rename 's/IMG_//' *.jpg
exemplul 11. Adăugați extensia .bak
la toate fișierele.
$ rename 's/(.*)/.bak/' *
redenumiți mai multe fișiere cu mmv
utilitarul mmv excelează la redenumirea fișierelor pe baza modelelor, cum ar fi eliminarea sau adăugarea de șiruri la toate fișierele sau rearanjarea părților din numele fișierelor. De obicei nu este instalat în mod implicit, dar puteți utiliza comanda corespunzătoare de mai jos pentru a instala mmv cu managerul de pachete al sistemului.
Ubuntu, Debian și Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS și RHEL:
$ sudo dnf install mmv
Arch Linux și Manjaro (instalați de la AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
din comenzile mmv
dacă doriți să Previzualizați modificările înainte de a le efectua.Exemplul 1. Modificați extensia tuturor fișierelor .jpeg
la .jpg
.
$ mmv '*.jpeg' '#1.jpg'
Exemplul 2. Schimbați toate numele fișierelor cu litere mici.
$ mmv '*' '#l1'
Exemplul 3. Schimbați toate numele fișierelor cu majuscule.
$ mmv '*' '#u1'
Exemplul 4. Rearanjați părți ale unui nume de fișier. Această comandă va schimba fișierele muzicale cu modelul Song-Artist.mp3
la Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
exemplul 5. Înlocuiți prima apariție a” IMG „cu” vacanță ” în toate numele fișierelor.
$ mmv '*IMG*' '#1Vacation#2'
exemplul 6. Adăugați un prefix la fiecare nume de fișier. Această comandă va prefixa „backup_” la fiecare fișier .log
.
$ mmv '*.log' 'backup_#1.log'
exemplul 7. Adăugați un sufix la fiecare nume de fișier. Această comandă va adăuga „_backup” la fiecare fișier .log
.
$ mmv '*.log' '#1.log_backup'
exemplul 8. Eliminați prefixul „IMG_” din toate fișierele .jpg
.
$ mmv 'IMG_*.jpg' '#1'
exemplul 9. Eliminați sufixul „_old” din toate fișierele.
$ mmv '*_old' '#1'
Bulk redenumi fișiere prin GUI
în cazul în care linia de comandă nu este într-adevăr dvs. de lucru, este posibil să redenumiți mai multe fișiere simultan prin GUI. Unul dintre cele mai bune instrumente pentru a face treaba este aplicația de redenumire în bloc care vine cu Thunar.
Thunar este browserul de fișiere implicit pentru Xfce, dar îl puteți instala indiferent de mediul desktop pe care îl utilizați. Dacă utilizați deja Xfce sau Thunar, atunci redenumirea în bloc face deja parte din sistemul dvs. În caz contrar, utilizați comanda corespunzătoare de mai jos pentru a o instala cu managerul de pachete al sistemului.
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
Pasul 1. După instalarea Thunar, căutați și deschideți utilitarul de redenumire în bloc.
Pasul 2. Faceți clic pe semnul plus pentru a adăuga fișiere pe care doriți să le redenumiți.
Pasul 3. Alegeți din lista de opțiuni ce doriți să faceți cu fișierele. Puteți să le schimbați pe toate cu litere mari sau mici, să adăugați o dată și o oră, să inserați text într-o anumită poziție, să adăugați numerotare automată, să înlocuiți caractere sau să căutați și să înlocuiți anumite modele din numele fișierelor, printre altele. În exemplul de mai jos, am adăugat o extensie de fișier .txt
la toate fișierele noastre.
Pasul 4. Când sunteți mulțumit de modificările de nume previzualizate în coloana „Nume nou”, faceți clic pe „Redenumiți fișierele” pentru a efectua redenumirea în bloc.
redenumirea mai multor fișiere pe WSL
dacă utilizați subsistemul Windows Pentru Linux, unele comenzi de mai sus nu vor funcționa, în special cele care implică schimbarea fișierelor cu litere mici sau majuscule. Windows este insensibil la majuscule și minuscule, astfel consideră că File.txt
, file.txt
și FILE.txt
sunt toate același fișier.
veți primi pur și simplu o eroare că fișierul există deja dacă încercați să redenumiți FILE.txt
la file.txt
. Pentru a evita această problemă, utilizați unul dintre următoarele exemple.
Exemplul 1. Modificați extensia majusculă .JPG
la minuscule .jpg
pentru toate fișierele (folosind utilitare implicite).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
Exemplul 2. Modificați extensia majusculă .JPG
în minusculă .jpg
pentru toate fișierele (utilizând utilitarul redenumire).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
Exemplul 3. Modificați extensia majusculă .JPG
la minuscule .jpg
pentru toate fișierele (utilizând utilitarul mmv).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
Exemplul 4. Schimbați toate numele fișierelor cu litere mici (folosind utilitare implicite).
$ 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
exemplul 5. Schimbați toate numele fișierelor cu litere mici (folosind utilitarul mmv).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
concluzie
este posibil să utilizați utilitarele Bash implicite pentru toate redenumirea în bloc pe Linux, dar redenumirea și instrumentele mmv o fac mult mai ușoară. De asemenea, putem folosi aplicația de redenumire în bloc a lui Thunar atunci când preferăm să folosim GUI peste linia de comandă. Exemplele din acest ghid acoperă o gamă largă de scenarii de redenumire și pot fi ușor adaptate pentru a se potrivi altor nevoi.