Hemsida » hur » Shell Geek Byt namn på flera filer på en gång

    Shell Geek Byt namn på flera filer på en gång

    Låt oss säga att du har en katalog med hundratals filer med fela filnamn, och du vill ersätta alla filnamn som innehåller testa med prod. (detta är ett konstruerat exempel). Vi kan enkelt göra detta med kommandot "för" i bash, kombinerat med lite bash godhet. Idag lär vi oss att ersätta text i en variabel i en för loop.

    Kommandot "för" fungerar så här:

    för var in; gör $ var; gjort

    Du kan ersätta med vilket filmatch som helst, t.ex. * eller * .txt, och du kan ersätta med något Linux-kommando. Kommandot körs i följd på varje fil som matchas av filmatchningsmönstret.

    Det är här den bash-variabla hanteringen gör det ännu mer intressant. Istället för att bara göra något som "mv $ var" kan vi ersätta text i filnamnet med den här syntaxen:

    $ Var / Original / ReplaceText

    Så nu, om vi kör det här kommandot i vår katalog:

    för f i *; gör mv $ f $ f / test / prod; gjort

    För varje fil som matchas av *, kommer bash att utföra ett kommando som liknar detta:

    mv test.config prod.config

    Jag har funnit att kunskap om skalet är ovärderligt när du administrerar servrar eller bara för att hantera din filsamling och har sparat mig timmar av vad som annars skulle ha varit manuellt arbete.

    Och ja, jag inser att det finns ett antal verktyg som kan åstadkomma byte av flera filer.