Wie kann ich alle Dateien im aktuellen Verzeichnis mit einer bestimmten Erweiterung in eine andere Erweiterung umbenennen?

Wie kann ich alle Dateien im aktuellen Verzeichnis mit einer bestimmten Erweiterung in eine andere Erweiterung umbenennen?

Mögliches Duplikat:
Umbenennen mehrerer Dateien (Ändern der Erweiterung)

Angenommen, ich habe in meinem aktuellen/Arbeitsverzeichnis fünf Dateien:

file1.xvg
file2.xvg
file3.xvg
file1.eps
file2.eps

Gibt es eine Möglichkeit, alle Dateien im aktuellen/Arbeitsverzeichnis mit der Erweiterung.xvgund geben Sie ihnen die neue Erweiterung.txt(etwas verlassen.epsrenameDateien allein)? Kann dies mit , mv, oder vielleicht gemacht werden mmv? Ich verwende Ubuntu Linux. Danke!

Antwort1

Für Ihre spezielle Frage wird dieser Befehl funktionieren. Überprüfen Sie, ob Sie mit der vorgeschlagenen Umbenennung einverstanden sind, und löschen Sie dann das , -ndamit der Vorgang fortgesetzt wird.

rename -n 's/\.xvg$/.txt/' *.xvg

Dies bedeutet im Wesentlichen, dass Sie für alle Dateien mit der .xvgErweiterung im aktuellen Verzeichnis die Dateien suchen, die $mit () enden .xvg, und diesen Teil des Namens in ändern .txt.

Weitere Einzelheiten und ein Beispiel unten.


Ja, der renameBefehl erledigt das für Sie. Ein kurzes Beispiel, bei dem ich alle meine Dateien mit der .htmlErweiterung in umbenenne .html_bakund dabei andere Dateien im Verzeichnis ignoriere.

Ich würdestarkempfehlen die Verwendung der -nBefehlszeilenoptionErste(unten erklärt), um zu sehen, welche Änderungen auftreten würden, bevor der eigentliche Befehl ausgeführt wird.

Womit ich beginne:

$ ls
a.html  a.txt  b.html  htmlfile

das -nheißt einen "Probelauf" machen.. nur zeigen was sich ändern würde, nichts ändern!

$ rename -n 's/\.html$/.html_bak/' *
a.html renamed as a.html_bak
b.html renamed as b.html_bak

Habe noch die Originaldateien.

$ ls
a.html  a.txt  b.html  htmlfile

Jetzt im Ernst:

$ rename  's/\.html$/.html_bak/' *

Dateien wurden umbenannt.

$ ls
a.html_bak  a.txt  b.html_bak  htmlfile

In den obigen Beispielen verwende ich , *um die Dateien anzugeben, die bei der Umbenennungsoperation berücksichtigt werden sollen. Ich hätte dies .htmlmit auf Dateien beschränken können *.html.

Weitere Informationen finden Sie auf der Manpage zum Umbenennen.

Antwort2

Dies kann folgendermaßen erfolgen:

rename 's/xvg$/txt/' *.xvg

Das Glob-Muster stellt sicher, dass nur *.xvgDateien betroffen sind.

verwandte Informationen