Shell Geek hernoemt meerdere bestanden tegelijkertijd
Stel dat u een map met honderden bestanden met de verkeerde bestandsnamen heeft en dat u elke bestandsnaam wilt vervangen test met por. (dit is een gekunsteld voorbeeld). We kunnen dit gemakkelijk doen met het "voor" -commando in bash, gecombineerd met een beetje bash-goedheid. Vandaag leren we hoe je tekst in een variabele in een for-lus kunt vervangen.
De opdracht "voor" werkt als volgt:
voor var in; do $ var; done
Je kunt vervangen met elk patroon voor bestandsovereenkomst, zoals * of * .txt, en u kunt het vervangen met elke linux-opdracht. De opdracht wordt in volgorde uitgevoerd op elk van de bestanden die overeenkomen met het patroon van de bestandsovereenkomst.
Dit is waar de bash variabele afhandeling het nog interessanter maakt. In plaats van iets als "mv $ var" te doen, kunnen we tekst in de bestandsnaam vervangen met behulp van deze syntaxis:
$ Var / Originaltext / replacetext
Dus nu, als we dit commando in onze directory uitvoeren:
voor f in *; do mv $ f $ f / test / prod; klaar
Voor elk bestand dat overeenkomt met *, voert bash een vergelijkbare opdracht uit:
mv test.config prod.config
Ik heb gemerkt dat kennis van de shell van onschatbare waarde is bij het beheer van servers of alleen voor het beheren van uw bestandsverzameling, en heeft me uren bespaard van wat anders handmatige werkzaamheden zouden zijn geweest.
En ja, ik besef dat er een aantal tools zijn die het hernoemen van meerdere bestanden kunnen bewerkstelligen.