GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Umbenennen von Dateien mit Erweiterungen in Kleinbuchstaben mit „Umbenennen“?

Ich versuche derzeit, eine große Menge von Dateien umzubenennen, und habe dazu ziemlich klobige Methoden verwendet, wie zum Beispiel:

rename 's:(.*).MOV:$1.mov:g' *.MOV
rename 's:(.*).JPG:$1.jpg:g' *.JPG

Was ich wirklich gerne tun würde, ist in der Lage zu sein, all diese Befehle mit dem 'y' sed zu kombinieren Operator. Offensichtlich können Sie mit diesem Operator Elemente in Kleinbuchstaben umwandeln. Das Problem ist, dass ich nur die Erweiterungen umwandeln muss. Gibt es eine Möglichkeit, dies mit diesem Befehl zu tun? Ich muss die Erfassungsgruppe im folgenden Ausdruck im Wesentlichen in Kleinbuchstaben umwandeln:^.+.(.+)$ . Gibt es eine Möglichkeit, dies zu tun? Ich bin ziemlich neu in dieser Art von Transformationen.

Akzeptierte Antwort:

Das ist das Perl-basierte rename gefunden auf Debian, Ubuntu und Derivaten, nach der Syntax zu urteilen. Sie können den tr nicht verwenden -Operator, da er auf die gesamte Zeichenfolge wirkt. Aber Sie können die Erweiterung abgleichen und sie mit L klein schreiben .

rename 's/.[^.]*$/L$&/' *.JPG *.MOV

Hier ist es unnötig, aber wenn der reguläre Ausdruck mehr als der Teil entspricht, den Sie in Kleinbuchstaben schreiben möchten, können Sie den zu vergleichenden Teil in eine Gruppe einfügen:

rename 's/.([^.]*)$/.L$1/' *.JPG *.MOV

Ersetzen Sie *.JPG *.MOV durch *.* um auf alle Dateien unabhängig von der Erweiterung zu reagieren. In bash ≥4.3 (und auch in bash 4.0–4.2, mit der Einschränkung, dass dies auch symbolische Links zu Verzeichnissen durchläuft) können Sie problemlos rekursiv auf Dateien in Unterverzeichnissen usw. reagieren:

rename 's/.[^.]*$/L$&/' **/*.*

Für die zsh-Fans (die :r und :e Modifikatoren isolieren die Erweiterung vom Rest der Datei):

autoload zmv
zmv '*.(MOV|JPG)' '${f:r}.${(L)f:e}'      # these extensions, current directory
zmv '*.*' '${f:r}.${(L)f:e}'              # all extensions, current directory
zmv '**/*.*' '${f:r}.${(L)f:e}'           # all extensions, recursive directory traversal

Linux
  1. Centos – Alle Dateien mit einem bestimmten Namen umbenennen?

  2. Cat-Dateien mit Verzeichnis?

  3. Dateien im Verzeichnis umbenennen?

  4. Wie benenne ich den Satz von Dateien mit Muster um?

  5. Sichern Sie Ihre Dateien mit rsync

So benennen Sie eine Datei (en) in Linux um

Metamorphose 2 – Batch-Umbenennung Ihrer Dateien und Ordner unter Linux

So konvertieren Sie Textdateien in Groß- oder Kleinbuchstaben

Umbenennen von Dateien und Ordnern in cPanel

Wie benenne ich alle Dateien mit Sonderzeichen und Leerzeichen in einem Verzeichnis um?

Umbenennen von Dateien unter Linux mit einer Regex