PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script um "?" und "!" aus Dateinamen zu entfernen



Menetekel
08.02.04, 08:02
Hallo
Leider kennt FAT kein "?" und "!" in Dateinamen und somit schlägt das Kopieren von Dateien in denen diese Zeichen enthalten sind von ext2 fehl.
Deshalb suche ich ein shell-script, welches diese Zeichen entfernt oder am besten durch eine Variable meiner Wahl ersetzt.
Cu Menetekel
P.S.: Das Script sollte auch mit Unterverzeichnissen umgehen können

Basti_litho
08.02.04, 12:46
so ungefähr:

for i in `find -type f`; do mv "$i" "`echo "$i" |sed -e s/?//g`"; done

Löscht die "?"

und:
for i in `find -type f`; do mv "$i" "`echo "$i" |sed -e s/"|"//g`"; done

Löscht die "|"

Natürlich kannst du das Zeichen welches anstatt dessen gewählt werden soll, selber bestimmen:

for i in `find -type f`; do mv "$i" "`echo "$i" |sed -e s/"|"/blablabla/g`"; done

Ersetzt "|" mit "blablabla"


MfG

Menetekel
08.02.04, 14:23
Danke, das ist schon fast was ich suche. Das Script funzt aber leider nicht bei Dateien in deren Dateinamen Leerzeichen enthalten sind.

Basti_litho
08.02.04, 16:22
wenn du auf das "rekusiv" verzichten kannst, dann lass einfach den find befehl raus.

for i in *; do mv "$i" "`echo "$i" |sed -e s/?//g`"; done

Der Gestreifte
08.02.04, 16:40
So müsste es (auch rekursiv) gehen:
find . -type f -name *\[?\!\]* | while read ZEILE; do
mv "$ZEILE" `echo "$ZEILE" |sed s/[!?\ ]//g`
done

Menetekel
08.02.04, 17:01
Danke für die Antwort Gestreifter.
Das Script scheint aber nicht zu funzen:

Es sieht bei jeder Datei mit "!"oder "?"in etwa so aus:



mv: reguläre Datei »/home/mp3/Tracy_Chapman/TracyChapman/08-Why.mp3« kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden

Der Gestreifte
08.02.04, 17:18
Wie sieht denn der originale Name aus? Bei mir geht es:
maddin@captin:muell$ ls
08- Why.mp3 08-!Why.mp1 08-?Why.mp2
maddin@captin:muell$ find . -type f -name *\[?\!\ \]* | while read ZEILE; do mv "$ZEILE" `echo "$ZEILE" |sed s/[!?\ ]//g`; done
maddin@captin:muell$ ls
08-Why.mp1 08-Why.mp2 08-Why.mp3

Menetekel
08.02.04, 17:22
08\ -\ Why\?.mp3

Wenn ich direkt ins Verzeichniss gehe funzt es, komisch ...
Ein rekursives Script wäre dennoch nützlich.