Brauche Hilfe mit dem Umbenennungsbefehl in Linux

Brauche Hilfe mit dem Umbenennungsbefehl in Linux

Ich habe mehrere Dateien mit diesen Namen:

file1, A.ext  
file1, The.ext  

Ich muss ihre Namen ändern als

A file1.ext  
The file1.ext

Das heißt, ich muss den Artikel vom Ende an den Anfang verschieben und dabei das Komma löschen. Wie mache ich das?

Ich habe mir den Umbenennungsbefehl angesehen, habe aber keine Erfahrung mit regulären Perl-Ausdrücken. Ich bin auf diesen lächerlichen Befehl gestoßen, der nicht funktioniert. Ich lasse ihn stehen, um meine Hoffnungslosigkeit zu zeigen:

rename 's/(?<=[A-Z a-z \s]*),\sA//' *

Antwort1

Sie benötigen:

rename -n 's/^([^,]*),\s*(.*)\.ext$/$2 $1.ext/' *
  • Dies ^([^,]*),entspricht allem außer einem Komma bis zum ersten Komma am Anfang des Dateinamens.

  • Dies \s*(.*)\.ext$entspricht null oder mehr Leerzeichen, gefolgt von irgendetwas und endet mit .ext.

  • Das $2und $1ist ein Rückverweis auf das (.*)bzw. das ([^,]*).

wird die Umbenennung wie folgt vornehmen:

rename(a single file,.ext,  a single file.ext)
rename(a single file, some thing.ext, some thing a single file.ext)
rename(file1, A.ext, A file1.ext)
rename(file1, the.ext, the file1.ext)

P,s: Entfernen -n, um Dateien umzubenennen, die zu Testzwecken verwendet werden.

verwandte Informationen