Stapelumbenennung basierend auf Regex-Erfassung

354
Geert

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- renameSkripts (das aufgerufen wird prename):

prename -nv 's/some_name_n(\d)_51000/some_name_n51000_$1' * 

Beachten Sie, dass -vdie Ausgabe ausführlich ist und -nein Trockenlauf ausgeführt wird. Das Finale *ist eine Dateiauswahl.

Gründe warum es zuerst nicht funktioniert hat:

  • Ich habe renameanstelle des Perl-Skripts verwendet prename.
  • Ich habe die regex Gruppe zwischen Zahnspange zu erfassen, die dann in den Variablen gespeichert wird $1( $2, $3fü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 renamePaket akzeptiert jedoch etwas andere Befehle.

0
Bitte beachten Sie, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 5 Jahren 0
Ich habe mit "Rename" gekämpft, weil ich versucht habe, es aufgrund von Regex-Capture umzubenennen, aber ich kann nicht herausfinden, wie. Die Frage ist sehr klar, es gibt absolut keine Grundlage für Missverständnisse. Erfahrungsgemäß lösen die Leute dies mit bash, awk, zmv oder was auch immer Sie haben, und das, was ich bereits versucht habe, schien mir nicht hilfreich zu sein. Jemand, der mit den Tools vertraut ist, wird dies wahrscheinlich in 5 Sekunden lösen, was mir viel Zeit spart und mir eine Vorlage für die zukünftige Verwendung zur Verfügung stellt. Viele Menschen lieben es, diese 5 Sekunden zu verbringen, wie andere Kollegen es immer tun, aber ich denke, für Sie geht es um mich. Geert vor 5 Jahren 0
"Ich denke für dich geht es darum, dass ich grove" Nein, ist es nicht. Es geht darum, dass die Community Standards für die Fragenqualität festgelegt hat. Wenn wir einfach alle Skriptfragen ohne Rücksicht auf den vom Fragesteller angezeigten Aufwand beantworteten, würde die Site von gimethescriptz-Fragen überrannt. Fühlen Sie sich frei, die Schließung auf https://meta.superuser.com/ zu bestreiten. DavidPostill vor 5 Jahren 0
Außerdem geben Sie nicht einmal Ihr Betriebssystem oder Ihre Skriptsprache an. Die Frage entspricht eindeutig nicht unseren Qualitätsstandards. DavidPostill vor 5 Jahren 0
Du hast recht, ich habe überreagiert. Geert vor 5 Jahren 0
Ich habe darauf geantwortet, Sie können es öffnen, wenn Sie möchten. Geert vor 5 Jahren 0
OK. Bitte bearbeiten Sie die Antwort nicht in Ihre Frage. [su] ist eine Frage- und Antwortseite, und Antworten sollten von Fragen getrennt sein. Sie können stattdessen [Ihre eigene Frage beantworten] (https://superuser.com/help/self-answer). DavidPostill vor 5 Jahren 0

0 Antworten auf die Frage