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 - /' *.mp3
wü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 rename
Befehl 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.mp3
wird 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.mp3
zu 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]\ [^-]*