Stapelumbenennung basierend auf Regex-Erfassung
Verzeihen Sie mir, dass ich nicht recherchiert habe, aber ich bin nicht mit allen Tools vertraut.
Ich möchte eine Liste mit Dateien umbenennen, die wie geht
some_name_n1_51000 some_name_n2_51000 some_name_n3_51000 ...
das sollte eigentlich genannt werden
some_name_n51000_1 some_name_n51000_2 some_name_n51000_3 ...
dh der 51000 und die Seriennummer sollten die Position wechseln.
Das folgende funktioniert unter Debian unter Verwendung des Perl- rename
Skripts (das aufgerufen wird prename
):
prename -nv 's/some_name_n(\d)_51000/some_name_n51000_$1' *
Beachten Sie, dass -v
die Ausgabe ausführlich ist und -n
ein Trockenlauf ausgeführt wird. Das Finale *
ist eine Dateiauswahl.
Gründe warum es zuerst nicht funktioniert hat:
- Ich habe
rename
anstelle des Perl-Skripts verwendetprename
. - Ich habe die regex Gruppe zwischen Zahnspange zu erfassen, die dann in den Variablen gespeichert wird
$1
($2
,$3
für die zweite und die dritte Gruppe und so weiter).
Was kann verbessert werden:
Auf der Debian-Strecke gibt mir dies eine Warnung vor Missachtung
Veraltetes Programm im Einsatz: Die Umbenennung wie im Lieferumfang des Debian-Perl-Pakets enthalten, wird nach der Veröffentlichung von stretch entfernt. Bitte installieren Sie das separate Umbenennungspaket, das denselben Befehl enthält.
Das rename
Paket akzeptiert jedoch etwas andere Befehle.
0 Antworten auf die Frage
Verwandte Probleme
-
14
Regex-Tool für Linux
-
3
Kann nicht herausfinden, warum diese Regex nicht zutrifft
-
2
Entfernen von Zeilenumbrüchen aus einer RTF-Datei mit sed
-
5
Grep-Tool für XML
-
4
Wozu benutzt man ? in grep befehl .. und praktischen einsatz
-
13
Analysieren von Textdateien
-
1
Gibt es ein Gegenteil von: g in vim?
-
1
Ersetzen Sie Dateiname durch Dateipfad durch Sed
-
6
Editor mit mehrzeiligem Suchen und Ersetzen
-
2
Suchausblick 2003 mit einem regulären Ausdruck