kanotix.com

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.

find $HOME -name '*:*' -print >>liste.txt &>/dev/null

erstellt dir ne liste mit dateien (statt home kanste hier den gewünschten ordner angeben)die nen doppelpunkt ham.

jetz noch nen bichen seden und ne while schleife und dein script is fertig Mr. Green
zu sed guck ma hier: http://sed.sourceforge.net/sed1line_de.html

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. Sehr glücklich
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

Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007