ianuarie 1, 2022

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.

exemplele din acest ghid sunt folosite pentru a redenumi toate fișierele din Directorul de lucru prezent. Majoritatea acestor comenzi pot fi ușor modificate pentru a funcționa recursiv. Rețineți că unele exemple vor redenumi și directoarele.

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
utilizați opțiunea -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 .jpegla .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
utilizați opțiunea -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 .jpegla .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.mp3la 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.

deschiderea utilitarului 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.

adăugarea unei liste de fișiere la aplicația de redenumire în bloc

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.

instrument de redenumire în bloc care arată numele vechi și numele de fișiere noi

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.

finalizarea lucrării de redenumire î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.txtla 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.

Lasă un răspuns

Adresa ta de email nu va fi publicată.