Scripte - Sonderzeichen in Dateinamen Witwe_Bolte - 20.03.2007, 10:18 Uhr Titel: Sonderzeichen in Dateinamen
Habe einen Haufen Dateien die einen Doppelpunkt enthalten. Für ReiserFS offenbar kein Problem. Das Speichern auf vfat umso mehr.
Wie müte das Skript aussehen, das die Doppelpunkte rausschmeißt?
Hab mich hier ja schon als sed-Depp geoutet.
brummer - 20.03.2007, 11:13 Uhr Titel: RE: Sonderzeichen in Dateinamen
rename -f 'y/:/_/' "dateiname" 2>/dev/null
ersetzt dir den doppelpunkt mit nem unterstrich_
läßte den unterstrich weg, wird der doppelpunkt gelöscht.
gruß brummer
Witwe_Bolte - 20.03.2007, 11:21 Uhr Titel: RE: Sonderzeichen in Dateinamen
Wow. Ein Chat-Room kann nicht schneller sein, als dieses Forum.
Witwe_Bolte - 22.03.2007, 08:52 Uhr Titel: RE: Sonderzeichen in Dateinamen
Das wars aber noch nicht ganz. Mit solchen Dateien mach ich dem Perl-Skript das Leben natürlich schwer:
Bach-Ensemble Helmuth Rilling - 04 - Aria (A): Herr, was du willt, soll mir gefallen.ogg
Vermute mal, daß es wegen der Leerzeichen abkackt, weil es die Datei nicht finden kann. Fehlermeldung kommt übrigens nur, wenn ich den Doppelpunkt mit Unterstrich ersetzen will. Laß ich den Ersatzstring leer, passiert gar nix.
Befriedigt mich auch nicht, daß es ein perl-skript ist. Eine Idee mit mv?
brummer - 22.03.2007, 09:39 Uhr Titel: RE: Sonderzeichen in Dateinamen
äh bei rename mußt du den Pfad mit angeben, dann solts gehn.
leerzeichen in dateinamen fürn ja immer zu verwirrung, die solltest du auch gleich ersetzen.
ne andere möglichkeit is vieleicht noch diese script:
http://www.openaddict.com/documents/abs ... LANKRENAME
das kanste ja nen bichen umbaun das es den : auch gleich ersetst.
Witwe_Bolte - 30.03.2007, 11:37 Uhr Titel: färdsch
so scheint es geklappt zu haben. Merke: Du sollst nicht an Variablen, {} und "" sparen. So hat es auch mit den Leerzeichen im Pfad geklappt.
Code:
#!/bin/sh
find -type f -name *:* > $$dateiliste.tmp
trap 'rm -f $$dateiliste.tmp; exit 1' INT
while read x
do
alt="$x"
n=`echo "$x"|sed 's/://g'`
mv "${alt}" "${n}"
done < $$dateiliste.tmp
rm -f $$dateiliste.tmp