Samstag, 10. März 2012

Shell Geek: Wijzig de naam van meerdere bestanden tegelijk

Laten we zeggen dat je een map met honderden bestanden met de verkeerde bestandsnamen, en je wilt elke bestandsnaam met vervanging test with prod. (Dit is een geforceerd voorbeeld). We kunnen gemakkelijk doen met het "voor" commando in bash, gecombineerd met een beetje bash goedheid. Vandaag gaan we leren hoe de tekst te vervangen in een variabele in een for-lus.

De "voor" commando werkt als volgt:

voor de var in ;do $var;done

U kunt vervangen met een bestand overeenkomen met patroon, zoals * of *. txt, en u kunt vervangen met een linux commando. De opdracht zal worden uitgevoerd in volgorde op elk van de dossiers geëvenaard door het bestand overeenkomen met patroon.

Dit is waar de bash variabele bediening maakt het nog interessanter. In plaats van alleen om iets te doen als "mv $ var", kunnen we vervangen door de tekst in de bestandsnaam met de volgende syntaxis:

$ {Var / originaltext / replaceText}

Dus nu, als we voer je dit commando op onze directory:

for f in *; doen mv $ f $ {f / test / producten}; gedaan

Voor elk bestand gepaard met *, zal bash uitvoeren een opdracht zoals deze:

mv test.config prod.config

Ik heb ontdekt dat kennis van de shell is van onschatbare waarde bij het toedienen van servers of gewoon voor het beheer van uw dossier collectie, en heeft mij gered uur wat er zou anders zijn geweest manueel werk.

En ja, ik besef dat er een een aantal tools die hernoemen van meerdere bestanden kunnen bereiken.

Keine Kommentare:

Kommentar veröffentlichen