Ich glaube, Sie wissen bereits, wie Sie Dateien in Linux mit dem Befehl mv umbenennen. Sie verwenden es einfach im Format:
mv old_file_name new_file_name
An dieser Methode ist nichts auszusetzen. Das ist schließlich der Standardweg.
Aber was ist, wenn Sie mehrere Dateien umbenennen müssen? Die Verwendung eines mv-Befehls nach dem anderen würde viel Zeit in Anspruch nehmen und sollte auf jeden Fall vermieden werden.
Sie können die Befehlsoption find exec mit dem Befehl mv verwenden, um diesen Prozess zu automatisieren. Aber lassen Sie mich Ihnen einen noch einfacheren Weg zum Umbenennen von Dateien basierend auf einem Regex-Muster zeigen.
Befehl zum Umbenennen unter Linux
Es gibt ein Befehlszeilenprogramm namens rename, mit dem Sie alle Dateien umbenennen können, die einem bestimmten Muster in Perl-Regex-Form entsprechen. Der Befehl zum Umbenennen funktioniert nur mit dem Dateinamen, nicht mit der Datei selbst.
Dies ist der Syntax-Umbenennungsbefehl wie folgt:
rename [options] perlexpr [files]
Dieser 'Umbenennungsbefehl' hat die folgenden Optionen:
- -v :Ausführlicher Modus.
- -n :Keine Aktion. Zeigen Sie die Dateien an, die umbenannt würden, aber benennen Sie die Dateien nicht um.
- -o :Kein Überschreiben. Vorhandene Dateien nicht überschreiben.
- -f :Kraft. Vorhandene Dateien überschreiben.
- -s :Symlink nicht umbenennen, sondern sein Ziel
Beachten Sie, dass der Befehl rename kein Standarddienstprogramm ist, das auf Linux-Distributionen wie dem Befehl mv oder cp vorinstalliert ist. Möglicherweise müssen Sie es installieren. Wenn Sie ein sudo-Benutzer in Ubuntu oder Debian sind, können Sie diesen Befehl verwenden, um rename:
zu installierensudo apt install rename
Jetzt fragen Sie sich sicher, wie Sie Dateien mit dem Befehl rename umbenennen können. Lassen Sie mich zwei praktische Szenarien zeigen, in denen Ihnen dieser Befehl viel Zeit sparen wird.
Szenario 1:Ersetzen Sie in allen Dateinamen in Linux ein Zeichen durch ein anderes
Stellen Sie sich vor, Sie haben Leerzeichen in mehreren Dateinamen. Es ist ein Albtraum, Leerzeichen in Dateinamen unter Linux zu handhaben. Aus diesem Grund benennt kein erfahrener Benutzer jemals eine Datei mit Leerzeichen.
Natürlich möchten Sie die Leerzeichen entfernen und durch einen Unterstrich (_) ersetzen. Der Umbenennungsbefehl ist hier ziemlich praktisch. Mal sehen wie.
Um die Leerzeichen in den Namen aller Dateien im aktuellen Verzeichnis durch Unterstriche zu ersetzen, müssen Sie nur den renam-Befehl auf diese Weise verwenden:
rename 's/ /_/g' *
Wenn Sie auch nur annähernd mit Regex vertraut sind, würden Sie verstehen, dass s/ /_/g nach Leerzeichen sucht und alle Vorkommen von Leerzeichen durch _ ersetzt.
Der interessante Teil ist das Sternchen (*). Das Sternchen weist Sie an, übereinstimmende Dateien im aktuellen Verzeichnis umzubenennen.
Aber was ist, wenn Sie auch alle übereinstimmenden Dateien in Unterverzeichnissen umbenennen möchten? In diesem Fall können Sie zwei Sternchen wie diese verwenden:
rename 's/ /_/g' **
Szenario 2:Ändern Sie die Erweiterungen mehrerer Dateien gleichzeitig in Linux
Hier ist ein weiteres Szenario für Sie. Sie haben mehrere Dateien mit Namen wie meine_datei.xyz und möchten diese Dateien umbenennen, sodass sie so etwas wie meine_datei.abc werden.
Um die Erweiterungen mehrerer Dateien gleichzeitig zu ändern, können Sie den Umbenennungsbefehl auf folgende Weise verwenden:
rename 's/\.xyz$/.abc/' **
Lassen Sie mich Ihnen den obigen Befehl erklären.
‘s/\.xyz$/.abc/’ :Dies ist ein regulärer Ausdruck, der bedeutet, dass das .xyz-Zeichen am Ende der Zeile durch .abc ersetzt wird. Das zusätzliche \ wird verwendet, um dem zu entkommen. andernfalls würde es bedeuten, irgendein Zeichen vor xyz abzugleichen.
** bedeutet im aktuellen Verzeichnis und seinen Unterverzeichnissen suchen.
Hat Ihnen der Umbenennungsbefehl gefallen?
Nicht viele Leute kennen den Umbenennungsbefehl. Das mag auch daran liegen, dass rename auf vielen Linux-Systemen kein Defacto-Befehl ist.
Ich finde diesen Befehl jedoch ziemlich praktisch, wenn ich mit dem gleichzeitigen Umbenennen mehrerer Dateien zu tun habe.
Und du? Haben Sie in der Vergangenheit den Umbenennungsbefehl verwendet? Wie möchten Sie mehrere Dateien auf einmal umbenennen?