Să presupunem că aveți un director cu sute de fișiere cu nume de fișier greșit și doriți să înlocuiți fiecare nume de fișier care conține Test cu prod. (acesta este un exemplu conturat). Putem face cu ușurință acest lucru cu comanda "pentru" în bash, combinată cu un pic de bash bunătate. Astăzi vom învăța cum să înlocuiți textul într-o variabilă într-o buclă pentru.
Comanda "pentru" funcționează astfel:
pentru var în; face $ var;
Puteți înlocui cu orice model de potrivire a fișierelor, precum * sau * .txt și puteți înlocui cu orice comandă linux. Comanda va fi executată succesiv pe fiecare dintre fișierele potrivite de modelul de potrivire a fișierelor.
Acesta este locul unde manipularea variabilă a bash-ului face chiar mai interesantă. În loc să facem doar ceva de genul "mv $ var", putem înlocui textul în numele fișierului folosind această sintaxă:
$ Var / originaltext / replacetext
Deci, dacă executăm această comandă în directorul nostru:
pentru f în *; nu mv $ f $ f / test / prod;
Pentru fiecare fișier asociat cu *, bash va executa o comandă similară cu aceasta:
mv test.config prod.config
Am descoperit că cunoașterea coajă este inestimabilă atunci când administrează servere sau doar pentru gestionarea colecției de fișiere și mi-a salvat ore de lucru care altfel ar fi fost manual.
Și da, îmi dau seama că există o serie de instrumente care pot realiza redenumirea mai multor fișiere.