Shell Geek Redenumiți mai multe fișiere simultan
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 in; face $ var;
Puteți înlocui cu orice model de potrivire a fișierelor, cum ar fi * sau * .txt și puteți înlocui cu orice comandă linux. Comanda va fi rulată succesiv pe fiecare dintre fișierele potrivite de modelul de potrivire a fișierelor.
Acesta este locul unde manipularea variabilă a bash-ului o face și mai interesantă. În loc de a face 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ă pe directorul nostru:
pentru f în *; face 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ă serverele sau doar pentru gestionarea colecției de fișiere și mi-a salvat ore din ceea ce altfel ar fi fost lucrul manual.
Și da, îmi dau seama că există o serie de instrumente care pot realiza redenumirea mai multor fișiere.