Als Antwort auf meine vorherige Frage , ob ich mehrere Dateien des Formulars habe
sw.ras.001
sw.ras.002
sw.ras.003
…
Welchen Befehl kann ich verwenden, um die ras.
in der Mitte aller Dateien zu entfernen ?
Als Antwort auf meine vorherige Frage , ob ich mehrere Dateien des Formulars habe
sw.ras.001
sw.ras.002
sw.ras.003
…
Welchen Befehl kann ich verwenden, um die ras.
in der Mitte aller Dateien zu entfernen ?
ras
, dh am Ende mitsw..001
, oder dasras.
verlassensw.001
?\.
in die Muster aufnehmen.Antworten:
Sie können dies mit einer ziemlich kleinen Modifikation der beiden Antworten der letzten Frage tun:
oder
Erläuterung:
rename
ist einperl
Skript, das einenperl
regulären Ausdruck und eine Liste von Dateien verwendet, die Regex nacheinander auf den Namen jeder Datei anwendet und jede Datei in das Ergebnis der Anwendung der Regex umbenennt. In unserem Fallras
wird wörtlich abgeglichen und\.
entspricht einem Literal.
(da.
nur ein anderes Zeichen als ein Zeilenvorschub angegeben wird), und das wird durch nichts ersetzt.Die
for
Schleife nimmt alle Dateien, die mitsw.ras.
(Standard Shell Glob) beginnen, und durchläuft sie.${var/search/replace}
sucht$var
nachsearch
dem ersten Vorkommen und ersetzt es durchreplace
,${file/ras./}
kehrt also$file
mit dem erstenras.
entfernten zurück. Der Befehl benennt die Datei also in den gleichen Namen minus umras.
. Beachten Sie, dass dieses Suchen und Ersetzen.
wörtlich genommen wird und nicht als Sonderzeichen.quelle
Eine andere Option ist die Verwendung von mmv (Mass MoVe und Umbenennen):
Vergessen Sie nicht, die einfachen Anführungszeichen um Ihre Muster zu verwenden, da sonst die Sterne auf der Shell-Ebene erweitert werden.
Das Dienstprogramm ist nicht immer verfügbar, aber wenn nicht, können Sie es installieren mit:
Siehe die Manpage hier .
quelle
In jedem POSIX-compliant Schale (
bash
,dash
,ksh
, usw.):Oder mit
rename
:quelle
Vor kurzem musste ich eine Reihe von Dateien massenweise umbenennen, wobei ich das letzte Vorkommen eines Zeichens ersetzen musste, bei dem das Zeichen in den Dateinamen mehrfach vorkam. In diesem speziellen Fall hatte ich den letzten Strich ersetzen
-
mit einem Unterstrich_
, drehen diese:das mögen:
Es hat eine Weile gedauert, aber das hat es endlich geschafft:
Hier:
${i%-*}
Entspricht dem Beginn des Dateinamens bis zum letzten Vorkommen des Bindestrichs-
${file##*-}
Stimmt mit dem Rest des Dateinamens nach dem letzten Vorkommen des Bindestrichs überein-
quelle