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.Es ist kein Skript erforderlich, dafür gibt es einen Einzeiler.
Versuchen Sie dies, um zu sehen, was es tut (keine Sorge, dies benennt Ihre Dateien noch nicht um, siehe unten):
Entfernen Sie,
--no-act
wenn es zu funktionieren scheint. Dadurch werden die Dateien tatsächlich umbenannt .Die
-execdir
Optionfind
stellt sicher, dass dieserename
im Dateiverzeichnis ausgeführt wird, sodass die Dateipfade immer mit beginnen./
- nach denen wir suchenrename
.rename
In Ubuntu werden Perls tatsächlich umbenannt, sodass Sie dort reguläre Ausdrücke verwenden können.quelle
rename
, die in jedem Verzeichnis ausgeführt wird. Weil es immer ein Arbeitsverzeichnis ist./
, ist das alles, was Sie sehen. Die Dateien werden jedoch in allen Unterverzeichnissen umbenannt.Das Folgende gibt Ihnen den Weg
Mit dem folgenden Befehl erhalten Sie die Datei ohne Pfad:
Sie benötigen eine Variable für den Pfad, alte und neue Dateinamen. Sie können den neuen Dateinamen mithilfe Ihres Codes abrufen und mithilfe dieser Variablen einen Quell- und Zielpfad erstellen. Ich würde empfehlen, einen Probelauf durchzuführen, bei dem Sie das an eine Datei angehängte Ziel wiederholen. Dann können Sie nach d suchen
quelle