Shell Geek benennt mehrere Dateien gleichzeitig um
Angenommen, Sie haben ein Verzeichnis mit Hunderten von Dateien mit den falschen Dateinamen, und Sie möchten jeden Dateinamen ersetzen Prüfung mit Prod. (Dies ist ein erfundenes Beispiel). Wir können dies leicht mit dem „for“ -Befehl in bash tun, kombiniert mit ein bisschen bash-Güte. Heute lernen wir, wie man Text in einer Variablen in einer for-Schleife ersetzt.
Der Befehl "für" funktioniert folgendermaßen:
für var in; do $ var; done
Sie können ersetzen mit einem beliebigen Dateiübereinstimmungsmuster wie * oder * .txt, und Sie können es ersetzen mit einem beliebigen Linux-Befehl. Der Befehl wird nacheinander für jede der Dateien ausgeführt, für die das Übereinstimmungsmuster für Dateien gilt.
Hier macht es die Handhabung der bash-Variablen noch interessanter. Anstatt etwas wie "mv $ var" zu tun, können Sie Text im Dateinamen mit der folgenden Syntax ersetzen:
$ var / originaltext / replacetext
Also, wenn wir diesen Befehl in unserem Verzeichnis ausführen:
für f in *; mach mv $ f $ f / test / prod; erledigt
Für jede mit * übereinstimmende Datei führt bash einen Befehl ähnlich dem folgenden aus:
mv test.config prod.config
Ich habe festgestellt, dass das Wissen über die Shell für die Verwaltung von Servern oder nur für die Verwaltung Ihrer Dateisammlung von unschätzbarem Wert ist und mir Stunden erspart hat, die ansonsten manuelle Arbeit gewesen wäre.
Und ja, ich weiß, dass es eine Reihe von Tools gibt, mit denen mehrere Dateien umbenannt werden können.