Wie kann ich Text aus Dateinamen in einem Ordner entfernen?
Ich versuche gerade:
rename s/"NEWER_(.*?)"//g *
Aber nichts, was umbenannt wird
Ich habe einen übergeordneten Ordner mit einer Reihe von Unterordnern in Dateien, an die OneDrive eine großartige Idee zum Anhängen eines "(NEWER_timestamp)" halten möchte, und das möchte ich entfernen.
Beispieldateinamen:
getyou.ico (NEWER_1417529079.87)
o7pm.ico (NEWER_1417529184.89)
o7th.ico (NEWER_1417529135.81)
rename
batch-rename
Kevin
quelle
quelle
Antworten:
Versuche Folgendes:
[^/]*(.*) .*$
stimmen nur mit dem letzten Teil des Pfads überein, der kein a enthält/
. Und(.*)
ist eine Gruppe von Übereinstimmungen nach dem letzten/
und vor einem Leerzeichen. Sein Rückverweis wird sein
$1
..*$
Ordnet alles dem$
Namen des Dateiende nach dem Leerzeichen zu.s/.../REPLACEMENT/
haben wir als Ersatzteil des Umbenennens nur die übereinstimmende Gruppe zwischen dem letzten\
und einem Leerzeichen beibehalten, das(.*)
als Gruppe von Übereinstimmungen bezeichnet wird.quelle
Sie sollten in Betracht ziehen, die Anführungszeichen außerhalb des regulären Ausdrucks zu verwenden (innerhalb werden sie wörtlich als Anführungszeichen verwendet) und zu entkommen
(
. Versuchen;Die Genauigkeit des Ausdrucks ist möglicherweise nicht erforderlich, aber Sie können beim Ändern von Dateien nicht vorsichtig genug sein.
quelle
reading filenames from STDIN
Ich bin bereits im übergeordneten Ordner, in dem sich all diese Dateien befinden*NEWER*
wie sie ist, wenn keine Erweiterungen gefunden werden, müssen Sie einen Fehler gemacht haben oder eine Shell verwenden, die einen nicht übereinstimmenden Platzhalter durch nichts ersetzt hat.