
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
$2
und$1
ist 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.