Shell Geek Gi nytt navn til flere filer på en gang
La oss si at du har en katalog med hundrevis av filer med feil filnavn, og du vil erstatte hvert filnavn som inneholder test med prod. (dette er et opptatt eksempel). Vi kan enkelt gjøre dette med "for" kommandoen i bash, kombinert med litt bash godhet. I dag lærer vi hvordan du erstatter tekst i en variabel i en for loop.
Kommandoen "for" fungerer slik:
for var i; gjør $ var; ferdig
Du kan erstatte med hvilket som helst filmatchemønster, som * eller * .txt, og du kan erstatte med hvilken som helst Linux-kommando. Kommandoen blir kjørt i rekkefølge på hver av filene som matches av filmatchemønsteret.
Dette er hvor bash-variabel håndtering gjør det enda mer interessant. I stedet for å bare gjøre noe som "mv $ var", kan vi erstatte tekst i filnavnet ved hjelp av dette syntaksen:
$ Var / originaltext / replacetext
Så nå, hvis vi kjører denne kommandoen på katalogen vår:
for f i *; gjør mv $ f $ f / test / prod; ferdig
For hver fil som samsvarer med *, vil bash utføre en kommando som ligner dette:
mv test.config prod.config
Jeg har funnet ut at kunnskap om skallet er uvurderlig når du administrerer servere eller bare for å administrere filsamlingen din, og har spart meg timer med hva som ellers ville vært manuelt arbeid.
Og ja, jeg skjønner at det finnes en rekke verktøy som kan oppnå omdøping av flere filer.