Ich ändere ein einfaches BASH-Skript, um Zahlen und Bindestriche vom Anfang meiner MP3-Dateien zu entfernen. Ziel ist es, Dateien umzubenennen wie:
- 11 Song 1.mp3
- 1-1-Song 2.mp3
- 11-1 Song 3.mp3
zu:
- Song 1.mp3
- Song 2.mp3
- Song 3.mp3
Ich habe dieses Skript, das für alle Dateien im aktuellen Verzeichnis funktioniert
$ for f in [0-9]*; do mv "$f" "`echo $f | sed 's/^[0-9]*\W*//'`"; done
und haben es geändert, um nach allen Dateien in Unterordnern zu suchen:
#!/bin/bash
dir=''
IFS='
'
for f in $(find $dir * -type f) ; do
mv "$f" "`echo $f | sed 's/^[0-9]*\W*//'`";
done
Das Problem ist, dass der $f
Wert den Unterordner und den Dateinamen zurückgibt und die mv
Zeile nach Dateien sucht, die mit [0-9] beginnen. Daher werden alle Dateien in einem Unterordner nicht umbenannt.
ZB Die Datei mp3/1-1 Song 1.mp3
beginnt mp3/
, beginnt nicht mit einer Zahl, daher wird sie nicht umbenannt.
Gibt es eine Möglichkeit, die Verzeichnis- und Dateiwerte in separate Variablen zu lesen, oder gibt es eine bessere Möglichkeit, dies zu tun?
Vielen Dank
A-Z
Instanzen ändern ,A-Za-z
falls Titel keine Großbuchstaben enthalten.