Falsch codierte Dateinamen finden, Problem mit K3b

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
nonoo

Falsch codierte Dateinamen finden, Problem mit K3b

Beitrag von nonoo » 21.11.2007 08:51:55

Hi, ich habe wohl einige falsch codierte Dateinamen.

Wie kann ich falsch codierte Dateinamen suchen?
K3b möchte diese nicht brennen.

Bild

Danke für eine Lösung.

mfg nonoo


Edit:
Wenn ich bei kfind als suche

uß1.jpg

oder

uß1

oder

"uß1.jpg"

oder

"uß1"

eingebe wird die Datei(en) leider nicht gefunden.

Komprirmiere das Verzeichnis als Zip Datei kann K3b einwandfrei brennen.
Ich möchte das Verezichnis aber unkomprimiert auf einer DVD haben.

nonoo

händische Lösung

Beitrag von nonoo » 21.11.2007 10:20:12

Hi, mein Problem habe ich gelöst.

In Kfind habe ich nun einggeben:

*.jpg

Dann habe ich die Dateien gesichtet und eine Datei mit zwei Quardraten anstatt von Zeichen gefunden.
Die Quadrate habe ich gelöscht.

Fuß1.jpg war die Windowbezeichnung.

fu__1.jpg ist die falsch codierte Bezeichnung gewesen (_ ist Qudrat)


Gibt es für solche Probleme nicht besser Lösungen?
Wie hätte ich es besser lösen können?

mfg nonoo

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 21.11.2007 10:23:54

Hast du schon versucht convmv zu benutzen?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: händische Lösung

Beitrag von gms » 21.11.2007 10:54:43

nonoo hat geschrieben: Gibt es für solche Probleme nicht besser Lösungen?
ja. Es kommt aber natürlich darauf an, wie diese Windows Dateien in dein System gelangt sind. Wenn diese Dateien über ein gemountetes Filesystem angesprochen werden, hilft meistens eine zusätzliche Mountoptioon (z.B iocharset )


Gruß
gms

nonoo

comvmv

Beitrag von nonoo » 21.11.2007 11:03:43

onvmv ist ein kleines Komandozeilen-Programm um Dateinamen von einem Zeichensatz in einen anderen zu konvertieren. Ausserdem kann es sehr bequem Dateinamen in Groß- bzw. Kleinschreibung ändern.

Homepage: http://www.j3e.de/linux/convmv/

Dokumentation: http://www.j3e.de/linux/convmv/man/

Lizenz: GPL

Tipps & Tricks

Alle Dateinamen im aktuellen Verzeichnis und Unterverzeichnissen von ISO-8859-15 nach UTF-8 konvertieren:

convmv -f iso-8859-15 -t utf-8 -r .

Alle Dateinamen im aktuellen Verzeichnis rekursiv in upper case oder lower case (Groß/Kleinschreibung) ändern:

convmv --upper -r .
(resp. --lower für lowercase conversion)

Debian Woody

Unter Debian Woody fehlt die passende Perl-Version 5.8. Es kann jedoch darauf ausgewichen werden, die Dateien von einem anderen Rechner aus, via NFS umzubenennen. Alternativ dazu können die auf recode basierenden Scripte verwendet werden:

$ apt-get install recode

Es empfiehlt sich, die beiden folgenden Skripte in ein Verzeichnis des $PATH zu legen, z.B. nach /usr/local/bin

* convert_all.sh

#!/bin/sh

if [ "$1" = "" ]; then
echo "Usage: $0 <folder>"
exit 1;
fi

# sort reverse to move files before folders!
find "$1" -print | sort -r | awk '{printf "convert_one.sh \"%s\"\n", $0;}' | sh

* convert_one.sh

#!/bin/sh

FOLDER=`dirname "$*"`
SOURCE=`basename "$*"`
TARGET=`echo -n "$SOURCE" | recode iso-8859-15..utf8`

if [ "$SOURCE" != "$TARGET" ]; then
echo "FOLDER: $FOLDER"
echo "CONVERT: $SOURCE"
echo "INTO: $TARGET"
mv -- "$FOLDER/$SOURCE" "$FOLDER/$TARGET"
fi

Anschliessend müssen diese Skripte noch ausführbar gemacht werden:

$ chmod +x convert_one.sh convert_all.sh

Mini-Howto

convmv (zuletzt geändert am 2007-09-05 09:58:09 durch p57B99BA8)

* Editieren (Text)
* Editieren (GUI)
* Info
Quelle:

http://linuxwiki.de/convmv


Hi, comvmv habe ich auch versucht, das brachte keinen Erfolg bei mir.

mfg nonoo

Benutzeravatar
uwepr
Beiträge: 657
Registriert: 03.02.2007 12:13:01
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Halle/S.
Kontaktdaten:

Beitrag von uwepr » 21.11.2007 12:38:38

Hallo nonoo,
könnte daran liegen, dass wir statt

awk

mawk

an Bord haben, also

find "$1" -print | sort -r | mawk '{printf "convert_one.sh \"%s\"\n", $0;}' | sh

Viele Grüße! Uwe Pr.
squeeze/fluxbox

nonoo

@Uwe Pr.

Beitrag von nonoo » 21.11.2007 12:45:29

Hi Up, also awk und mawk sagt mir überhaupt nichts.
So weit gehen meine Kenntnisse leider nicht.

mfg nonoo

Benutzeravatar
uwepr
Beiträge: 657
Registriert: 03.02.2007 12:13:01
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Halle/S.
Kontaktdaten:

Beitrag von uwepr » 21.11.2007 20:43:51

Hallo nonoo,
versuche folgendes:
Terminal öffnen, Befehl:

gedit convert_all.sh

Darin trägst Du folgenden Text ein:

Code: Alles auswählen

#!/bin/sh

if [ "$1" = "" ]; then
echo "Usage: $0 <folder>"
exit 1;
fi

# sort reverse to move files before folders!
find "$1" -print | sort -r | mawk '{printf "convert_one.sh \"%s\"\n", $0;}' | sh 
Speichere das Ganze ab. In Deinem home sollte jetzt die Datei convert_all.sh existieren.
Nächster Befehl:
chmod 755 convert_all.sh

Danach root-Rechte holen,Befehl:
su

Nun:

cp /home/nonoo/convert_all.sh /usr/local/bin

dann

exit

Weiter mit:

gedit convert_one.sh

Darin eintragen:

Code: Alles auswählen

#!/bin/sh

FOLDER=`dirname "$*"`
SOURCE=`basename "$*"`
TARGET=`echo -n "$SOURCE" | recode iso-8859-15..utf8`

if [ "$SOURCE" != "$TARGET" ]; then
echo "FOLDER: $FOLDER"
echo "CONVERT: $SOURCE"
echo "INTO: $TARGET"
mv -- "$FOLDER/$SOURCE" "$FOLDER/$TARGET"
fi
Weiter wie mit convert_all.sh beschrieben.

Benutzung der scripte, soweit ich das überblicken kann:

Terminal auf:

cd ~/betreff.VerzeichnisinDeinemhome

danach z.B. Befehl

convert_all.sh

Habe gerade versucht, Dein Bild von imageshak zu laden,da's ewig dauert, habe ich das abgebrochen.
Beiliegend zwei scripte, welche ich benutze, um Großbuchstaben in Dateiendungen in Kleinbuchstaben umzuwandeln:

suffixboy.sh

Code: Alles auswählen

#!/bin/bash
#suffixboy
#wandelt die Dateiendung von ausgewählten Dateitypen
#von Groß- in Kleinbuchstaben um
#Benutzung:
# $ cd /Zielverzeichnis
# $ suffixboy.sh


if  find *.JPG >&/dev/null
then
     echo "wandle um"
     for i in $(find *.JPG) ; do mv $i $(echo $i | sed 's/\.JPG/\.jpg/') 2>/dev/null ; done
     echo "setze Standard-Dateirechte"
     chmod 644 *.jpg
     echo "zeige Verzeichnisinhalt an"
     ls -lh | mawk 'NR > 1 {print $8 "\t" "Größe:" "\t" $5}' 
     ls -lh | mawk 'NR == 1 {print "Größe (ohne Unterverzeichnisse)" " " $1 ":" "\t" $2}'
     echo "erledigt"
else
     echo "Keine *.JPG zum Umwandeln gefunden"
fi ;


if  find *.PNG >&/dev/null
then
     echo "wandle um"
     for i in $(find *.PNG) ; do mv $i $(echo $i | sed 's/\.PNG/\.png/') 2>/dev/null ; done
     echo "setze Standard-Dateirechte"
     chmod 644 *.png
     echo "zeige Verzeichnisinhalt an"
     ls -lh | mawk 'NR > 1 {print $8 "\t" "Größe:" "\t" $5}' 
     ls -lh | mawk 'NR == 1 {print "Größe (ohne Unterverzeichnisse)" " " $1 ":" "\t" $2}'
     echo "erledigt"
else
     echo "Keine *.JPG zum Umwandeln gefunden"
fi ;


if  find *.DOC >&/dev/null
then
     echo "wandle um"
     for i in $(find *.DOC) ; do mv $i $(echo $i | sed 's/\.DOC/\.doc/') 2>/dev/null ; done
     echo "setze Standarddateirechte"
     chmod 644 *.doc
     echo "zeige Verzeichnisinhalt an"
     ls -lh | mawk 'NR > 1 {print $8 "\t" "Größe:" "\t" $5}' 
     ls -lh | mawk 'NR == 1 {print "Größe (ohne Unterverzeichnisse)" " " $1 ":" "\t" $2}'
     echo "erledigt"
else
     echo "Keine *.DOC zum Umwandeln gefunden"
fi ;


if  find *.XLS >&/dev/null
then
     echo "wandle um"
     for i in $(find *.XLS) ; do mv $i $(echo $i | sed 's/\.XLS/\.xls/') 2>/dev/null ; done
     echo "setze Standarddateirechte"
     chmod 644 *.xls
     echo "zeige Verzeichnisinhalt an"
     ls -lh | mawk 'NR > 1 {print $8 "\t" "Größe:" "\t" $5}' 
     ls -lh | mawk 'NR == 1 {print "Größe (ohne Unterverzeichnisse)" " " $1 ":" "\t" $2}'
     echo "erledigt"
else
     echo "Keine *.XLS zum Umwandeln gefunden"
fi ;
exit 0

GJPGjpg.sh

Code: Alles auswählen

#!/bin/bash
#wandle *.JPG in*.jpg um
#benötigt mmv,zenity
cd "$(echo "$(zenity --entry --title=GJPGstart --text="Pfad zu den umzuwandelnden *.JPG")" | sed "s:~:${HOME}:")" ;
if  find *.JPG >&/dev/null
then
     mmv "*.JPG" "#1.jpg"
     chmod 644 *.jpg
     zenity --info --title=GJPGstart --text=erledigt
else
     zenity --info --title=GJPGstart --text="Keine *.JPG zum Umwandeln gefunden"
fi ;
exit 0
Diese kannst Du wie oben beschrieben, bei Dir in usr/local/bin packen.
Wichtig: Überprüfe in der Paketverwaltung, ob bei Dir das Paket mawk oder gawk installiert ist. In lenny ist mawk, in etch hingegen gawk enthalten. Je nachdem muß Du in den Scripten mawk oder gawk eintragen! Infos liefert
man gawk
bzw.
man mawk

awk ist keine freie Software im Sinne von Debian, deshalb die kleine Version mawk und die große gawk. Zu awk im allgemeinen:
http://de.wikipedia.org/wiki/Awk
Viele Grüße! Uwe Pr.

[edit]: Ich sehe gerade, dass einzelne Zeilen wie umgebrochen in Code aussehen. Übertrage den Code per copy&paste.
cd "$(echo "$(zenity --entry --title=GJPGstart --text="Pfad zu den umzuwandelnden *.JPG")" | sed "s:~:${HOME}:")" ;
ist eine Zeile!
squeeze/fluxbox

Antworten