Wie kann ich den Umbenennungsbefehl verwenden, um diese Dateinamen zu korrigieren?

Wie kann ich den Umbenennungsbefehl verwenden, um diese Dateinamen zu korrigieren?

Ich versuche, Dateien zu ändern, die aussehen wie

01 Track name.mp3

hinein

01 - Track name.mp3

Bisher waren meine vergeblichen Versuche

rename '0. ' '$&- ' *.mp3
rename 's/0. /$&- /' *.mp3
rename '/0. /' '/$&- /' *.mp3
rename 's/0.\ /$&-\ /' *.mp3
rename 's/0.\ /$1-\ /' *.mp3

Antwort1

Angenommen, der Perl rename-Befehl lautet:

Mit dem letzten Befehl sind Sie ziemlich nah dran. rename 's/(0.) /$1 - /' *.mp3würde funktionieren. Es ist nicht nötig, das Leerzeichen zu maskieren, es hat in regulären Ausdrücken keine besondere Bedeutung (in Dateinamen schon, aber das spielt hier keine Rolle) und Sie brauchen Klammern um den Teil, den Sie wiederverwenden möchten.

Antwort2

Muss der renameBefehl verwendet werden?

$ ls
01 Track name.mp3  02 Track name.mp3  03 Track name.mp3

$ for a in *.mp3
> do
> mv -i "$a" "${a%% *} - ${a#* }"
> done

$ ls
01 - Track name.mp3  02 - Track name.mp3  03 - Track name.mp3

Antwort3

$ rename 's/^(\d\d)\s*/$1 - /' *.mp3

Dadurch werden alle MP3-Dateien umbenannt, die am Anfang ihres Dateinamens eine doppelte Ziffer haben, indem nach den Ziffern Leerzeichen-Bindestrich-Leerzeichen eingefügt werden. So 01 Track name.mp3wird daraus01 - Track name.mp3

Nach Ihren eigenen Versuchen zu urteilen, beginnen alle Dateinamen mit der Ziffer Null, und Sie scheinen einen Bindestrich einfügen zu wollendirektnach den Ziffern folgt ein Leerzeichen:

$ rename 's/^(0\d)\s*/$1- /' *.mp3

Dies transformiert 01 Track name.mp3zu 01- Track name.mp3.

Antwort4

Es gibt zwei (drei) Löschbefehle: einen, der Teil desutil-linuxPaket, das auf jedem nicht eingebetteten Linux-System installiert ist, und eines (eigentlich zwei Varianten), das auf Perl basiert. SieheWas ist mit all den Umbenennungen: Vorbenennung, Umbenennung, Dateiumbenennung?

Der Befehl util-linux ist sehr einfach, aber Sie befinden sich in der seltenen Situation, dass er das tut, was Sie wollen. Ersetzen Sie das erste Leerzeichen durch Leerzeichen-Bindestrich-Leerzeichen:

rename ' ' ' - ' [0-9][0-9]\ [^-]*

verwandte Informationen