Wie verschiebe ich Zahlen in Dateinamen bei einer Batch-Umbenennung?

13

Ich habe in den letzten Stunden versucht, herauszufinden, wie man Dateien umbenennt.

Ich habe 2000 Dateien, die so aussehen:

file.1.pdb
file.2.pdb
file.3.pdb

Ich möchte diese Dateien folgendermaßen umbenennen:

file.pdb.1
file.pdb.2
file.pdb.3
user812758
quelle
Meinten Sie nicht bash ?
Avazula
4
@avazula Nein, bitte lesen Sie diesen Artikel: en.wikipedia.org/wiki/Batch_renaming
Ali Razmdideh
@PerlDuck ja;)
Ali Razmdideh
2
Hey, nahen Wähler, glaubt ihr wirklich, wir brauchen nur eine Frage im [Batch-Rename] -Tag? Gibt es irgendetwas in dem verlinkten Beitrag, das tatsächlich bei der Aufgabe in dieser Frage hilft, außer der Idee der Verwendung rename? Mir scheint, wenn eine Stapelumbenennungsfrage bestimmte Details enthält, sollten wir nur bestimmte Antworten darauf geben.
Zanna

Antworten:

15

Wenn Sie renameinstalliert haben, können Sie verwenden

rename -n 's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # just watch what WOULD happen
rename    's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # actually rename the files

Der Befehl renamekann über installiert werden

sudo apt install rename
PerlDuck
quelle
11

Durch mmv(Umbenennen mehrerer Dateien durch Platzhaltermuster) ist es ganz einfach:

mmv '*.*.*' '#1.#3.#2' *.pdb

oder zmvaus zshMuschel; Es ist ein Modul, das das Umbenennen ermöglicht. siehe ZMV-Beispiele :

zmv -w '*.*.*' '$1.$3.$2' *.pdb
αғsнιη
quelle
3
Beides mmvund zmvscheinen mir eher exotisch. Stört es Sie, ein bisschen herauszufinden, was sie sind und was sie tun?
PerlDuck
2
Ich fügte einen Link zu ihrer Manpage und Beispielen hinzu.
αнsнιη
mmvist ziemlich cool. Scheint für diese Art der Umbenennung besser geeignet als rename, wenn auch weniger flexibel in Bezug auf die Namensübereinstimmung.
JAB
11

Perl benutzen rename:

rename -n 's/(\.\d+)(\.pdb)/$2$1/' *.pdb

Schnelle Erklärung:

  • *.pdb Ordnen Sie alle Dateien zu, die mit enden .pdb . (Von der Muschel erledigt)
  • (\.\d+)Ordnen Sie einen Literalpunkt und dann eine oder mehrere Dezimalstellen zu. Die Eltern bilden eine Match-Gruppe.
  • $2$1 Vertausche die erste und zweite Matchgruppe.
  • -nKeine Aktion (simulieren). Wenn die Ausgabe gut aussieht, führen Sie den Befehl ohne dieses Flag erneut aus.
wjandrea
quelle
1
LOL. Gleicher Gedanke. Sie waren 48 Sekunden schneller.
PerlDuck
1
@PerlDuck Lol, ja, der gleiche Gedanke. Die Antworten ergänzen sich auch recht gut: Sie decken die Installation ab, ich befasse mich mit der Syntax.
wjandrea
7

Sie können dieses Skript verwenden:

for i in `seq 1 2000`; do
mv file.$i.pdb file.pdb.$i
done

Oder dieser Befehl zum Kopieren und Einfügen:

for i in `seq 1 2000`; do mv file.$i.pdb file.pdb.$i; done

Um die obigen Befehle zu verwenden, legen Sie alle 2000 Dateien in einem Ordner ab, öffnen Sie das Terminal in diesem Verzeichnis und führen Sie den obigen Befehl darin aus.

Ali Razmdideh
quelle
5

Vor kurzem hat Nautilus, der Standard-Dateimanager, einen Dialog zum Batch-Umbenennen erhalten. Es ist noch nicht mächtig genug, um das zu tun, was Sie wollen. Zum Glück gibt es thunar, einen alternativen Dateimanager, der installiert werden kann. Mit dem Umbenennungsdialog von thunars können Sie über die GUI tun, was Sie wollen.

Installiere zuerst thunar:

sudo apt install thunar

Starten Sie thunar und navigieren Sie zu dem Verzeichnis, in dem sich Ihre Dateien befinden. Wählen Sie dann alle aus. Drücken Sie F2.

Wählen Sie im daraufhin angezeigten Dialogfeld erneut alle Dateien aus. Wechseln Sie in den Modus "Suchen & Ersetzen" und in "Name & Suffix". Aktivieren Sie "Regulärer Ausdruck". Verwenden Sie nun Folgendes zum Suchen und Ersetzen von Mustern:

file\.(.+)\.pdb

und

file.pdb.$1

Klicken Sie abschließend auf die Schaltfläche zum Umbenennen.

Der Vorteil dieser Methode besteht darin, dass Sie eine visuelle Vorschau dessen erhalten, was passieren wird, bevor Sie das Umbenennen durchführen.

thunar Umbenennungsdialog

Sebastian Stark
quelle
1
Sie können die meisten Programme veranlassen, englische Nachrichten auszudrucken, indem Sie dem Befehl LC_MESSAGES=POSIXz LC_MESSAGES=POSIX free. Funktioniert genauso für grafische Anwendungen, obwohl Sie bei dauerhaften Anwendungen wie Nautilus in der Standardkonfiguration nautilus -qzuerst die vorherige Instanz mit beenden müssen .
David Foerster
@ DavidFoerster danke für die Erwähnung, Bild ersetzt.
Sebastian Stark
3

Sie können verwenden renamevon util-linuxfür diese (der Befehl aufgerufen wird , rename.ulin ubuntu):

rename.ul .pdb '' *
rename.ul "file." "file.pdb." *

Dadurch wird die .pdbErweiterung zuerst vom Ende entfernt und dann wieder in die Mitte eingefügt.

user812791
quelle
1
Ziemlich cool. Ich wusste es nicht rename.ul. Die Syntax ist zwar etwas unerwartet, funktioniert aber tatsächlich so, wie Sie Werbung schalten. Plus: Es hat auch einen -nSchalter (nicht berühren, nur sagen).
PerlDuck