Script: FAT-kompatible Dateinamen
Beim Sichern mit rsync erhalte ich immer wieder Fehlermeldungen aufgrund des Dateinamens wenn in eine FAT-Partition geschrieben wird. Eine von mehreren Sicherung schreibt die Daten unkomprimiert auch in eine FAT-Partition um in einem worst case Szenario auch mit einem Windows-Rechner etwas damit anfangen zu können, normalerweise wird auf XFS-Partitionen kopiert. Die Originale liegen in einer XFS-Partition, wo zB ein ? kein Problem macht. Dazu möchte ich mir zuerst einen Überblick machen, welche ungültigen Zeichen verwendet wurden und bei welchen Dateien das Problem ist. Ich denke das Ergebnise ist überschaubar. Bei html-E-Books kann ich nicht so leicht den Dateinamen ändern, da dann der Link nicht mehr funktioniert. Wenn es nicht zuviele Seiten sind, dann bin ich bereit, dass diese Seiten nicht mehr aufrufbar sind. Notfalls besorge ich es mir nochmals aus dem Netz, wenn mich gerade diese Seite interessiert. Es ist ja nur fallweise Ich will die Fehlermeldungen beim Synchronisieren los werden und will diese Dateien aus organisatorischen Gründen auch nicht packen. Stichprobenartig sind es nicht so wichtige Dateien. Kann man die Zeichen, die in einem FAT-Dateisystem nicht erlaubt sind global definieren und an sed verfüttern und durch "_" oder nichts ersetzen? Damit habe ich die Dateinamen bis jetzt verändert und damit sind über 99% der Dateinamen "sauber". Die Logik ist nicht perfekt, reicht mir aber. find . -print | sort -r | while read i ; do n="`dirname "$i"`/`basename "$i" | sed -e "s/ /_/g" -e "s/'/_/g" -e "s/__/_/g" -e "s/ä/ae/g" -e "s/ö/oe/g" -e "s/ü/ue/g" -e "s/ß/ss/g" | tr '[[:upper:]]' '[[:lower:]]'`" [ "$i" != "$n" ] && mv "$i" "$n" 2>/dev/null done Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Freitag 23 Januar 2009 15:21:12 schrieb Al. Bogner:
Beim Sichern mit rsync erhalte ich immer wieder Fehlermeldungen aufgrund des Dateinamens wenn in eine FAT-Partition geschrieben wird. Eine von mehreren Sicherung schreibt die Daten unkomprimiert auch in eine FAT-Partition um in einem worst case Szenario auch mit einem Windows-Rechner etwas damit anfangen zu können, normalerweise wird auf XFS-Partitionen kopiert.
Die Originale liegen in einer XFS-Partition, wo zB ein ? kein Problem macht.
Dazu möchte ich mir zuerst einen Überblick machen, welche ungültigen Zeichen verwendet wurden und bei welchen Dateien das Problem ist. Ich denke das Ergebnise ist überschaubar. Bei html-E-Books kann ich nicht so leicht den Dateinamen ändern, da dann der Link nicht mehr funktioniert. Wenn es nicht zuviele Seiten sind, dann bin ich bereit, dass diese Seiten nicht mehr aufrufbar sind. Notfalls besorge ich es mir nochmals aus dem Netz, wenn mich gerade diese Seite interessiert. Es ist ja nur fallweise Ich will die Fehlermeldungen beim Synchronisieren los werden und will diese Dateien aus organisatorischen Gründen auch nicht packen. Stichprobenartig sind es nicht so wichtige Dateien.
Kann man die Zeichen, die in einem FAT-Dateisystem nicht erlaubt sind global definieren und an sed verfüttern und durch "_" oder nichts ersetzen?
siehe http://lists.opensuse.org/opensuse-de/2008-03/msg00336.html [..] Beste Grüße Christian Paul -- If the problem is a BIOS password, I used to do this for money... 1) Tell customer how difficult it is. 2) Obtain extortionate payment up-front. 3) Tell them to come back the next day. 4) Remove as much case as possible to disclose the motherboard. 5) Using a CO2 fire extinguisher, spray dry ice liberally over the motherboard until coated completely. 6) Leave CO2 to evaporate. 7) Turn on laptop - no password!!!! 8) Drink beer. I used to do two or three a week and it never failed. Course, that was ten years ago but I doubt that things have changed much. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Fre, 23 Jan 2009, Al. Bogner schrieb: [..]
find . -print | sort -r | while read i ; do n="`dirname "$i"`/`basename "$i" | sed -e "s/ /_/g" -e "s/'/_/g" -e "s/__/_/g" -e "s/ä/ae/g" -e "s/ö/oe/g" -e "s/ü/ue/g" -e "s/ß/ss/g" | tr '[[:upper:]]' '[[:lower:]]'`" [ "$i" != "$n" ] && mv "$i" "$n" 2>/dev/null done
Es wird übersichtlicher, wenn du die Ersetzungen in ein sed-script verpackst. Und du fängst keine Kollisionen ab. Außerdem werden ÄÖÜ nicht erfasst. ==== sanitize_filenames.sed ==== #!/bin/sed -f ## ggfs. ergänzen s/[ '"]/_/g; s/[[:upper:]]/[[:lower:]]/g; s/ä/ae/g; s/ö/oe/g; s/ü/ue/g; s/ß/ss/g; s/__/_/g; ==== find . -depth -print | while read -r f; do n="${f%\/*}/$(echo "${f##*\/}" | sed -f sanitize_filenames.sed)" test "$f" != "$n" && mv -i "$f" "$n" done HTH, -dnh -- Nein, ich bin NICHT die Signatur, ich putz hier nur!! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Al. Bogner
-
Christian Paul
-
David Haller