Re: SuSE 9.1 und UTF-8 (kleines Shell-Skript gesucht)
Hallo, ich habe Heute 9.1 installiert und bin im großen ganz zufrieden, nur habe ich ein großes Problem mit dieser Textumstellung.
ich nehme mal an, die meisten, die auf SuSE 9.1 updaten werden das Problem haben ihre bestehen Daten von latin1 auf UTF-8 zu konvertieren. Leider haben die SuSE-Buben noch keinen Eintrag in die SDB gesetzt deshalb. Das Konvertieren der Dateinamen ist mit dem folgenden Kommando ist kein Problem.
convmv --notest -r -f latin1 -t utf-8
Leider klappt das bei mir nicht, immer wenn ich diesen Befehl eingebe wird nur die optionserklärung von convmv dargestellt aber die Dateinamen werden nicht umgewandelt. Was mache ich falsch? Ich habe den Befehl als user und als root in einem Testverzeichnis eingegeben leider immer ohne erfolg. Weis jemand rat?
Bleibt nur noch das Problem mit den Dateiinhalten. Ich habe hier mehrere Verzeichnisse mit Text-Dateien und die will ich natürlich nicht per Hand anpassen. Mit "iconv" ist es möglich den Inhalt einer Datei umzuwandeln:
iconv -f latin1 -t utf-8 datei.txt >> xor-datei.txt
Meine Frage: Ist hier jemand gut genug im Shell-Skipting, der ein kleines Skript schreiben kann, das automatisch mit "iconv" alle Dateien (in allen Unterverzeichnissen) konvertiert? Leider reichen meine Kenntnisse nicht aus. Sicher wäre so ein kleines Skript für viele auf dieser Liste interessant.
Hallo,
ungetestet in perl :) Verwendung auf eigene Gefahr !
#!/usr/bin/perl $indir = "/texte/";
use File::Path;
chdir ("$indir"); foreach $file (glob("*.txt")) { $execme = "# iconv -f latin1 -t utf-8 $file >> $file_new"; open (iconver, "|$execme"); close(iconver);
}
Die # hab ich zu meiner Absicherung gesetzt :-)
Bin leider noch ziemlich unerfahren was skripte und konsolen Arbeit betrifft wie und wo muss ich das skrip eingeben damit es funktionert. gruß Mario
Am Freitag, 30. April 2004 22:43 schrieb mvsuse@sannyo.de:
Hallo,
ich habe Heute 9.1 installiert und bin im großen ganz zufrieden, nur habe
ich ein großes Problem mit dieser Textumstellung.
ich nehme mal an, die meisten, die auf SuSE 9.1 updaten werden das Problem haben ihre bestehen Daten von latin1 auf UTF-8 zu konvertieren. Leider haben die SuSE-Buben noch keinen Eintrag in die SDB gesetzt deshalb. Das Konvertieren der Dateinamen ist mit dem folgenden Kommando ist kein Problem.
convmv --notest -r -f latin1 -t utf-8
Leider klappt das bei mir nicht, immer wenn ich diesen Befehl eingebe wird nur die optionserklärung von convmv dargestellt aber die Dateinamen werden nicht umgewandelt. Was mache ich falsch? Ich habe den Befehl als user und als root in einem Testverzeichnis eingegeben leider immer ohne erfolg. Weis jemand rat?
Ich nehme mal an, dass Du auch den Namen der zu konvertierenden Datei angeben solltest, denn das was oberhalb steht ist nur das Kommando. ;-) [...]
ungetestet in perl :) Verwendung auf eigene Gefahr !
#!/usr/bin/perl $indir = "/texte/";
use File::Path;
chdir ("$indir"); foreach $file (glob("*.txt")) { $execme = "# iconv -f latin1 -t utf-8 $file >> $file_new"; open (iconver, "|$execme"); close(iconver);
}
Die # hab ich zu meiner Absicherung gesetzt :-)
Bin leider noch ziemlich unerfahren was skripte und konsolen Arbeit betrifft wie und wo muss ich das skrip eingeben damit es funktionert.
Du kopierst den Skripttext einfach in eine neue Datei (z.B. mit KWrite) und speicherst sie in _Deinem_ ~/bin Verzeichnis. Dann machst Du sie mit 'chmod 700' nur für den Besitzer ausführbar. Um mit dem oberen Skript arbeiten zu können, musst Du auch noch das Hash bzw. Doppelkreuz(#) vor dem 'iconv -f' entfernen. Gruss, Andreas.
Am Samstag, 1. Mai 2004 13:21 schrieb Andreas Scherer:
Am Freitag, 30. April 2004 22:43 schrieb mvsuse@sannyo.de:
convmv --notest -r -f latin1 -t utf-8
Leider klappt das bei mir nicht, immer wenn ich diesen Befehl eingebe wird nur die optionserklärung von convmv dargestellt aber die Dateinamen werden nicht umgewandelt. Was mache ich falsch? Ich habe den Befehl als user und als root in einem Testverzeichnis eingegeben leider immer ohne erfolg. Weis jemand rat?
Ich nehme mal an, dass Du auch den Namen der zu konvertierenden Datei angeben solltest, denn das was oberhalb steht ist nur das Kommando. ;-)
Danke das war der Grund, ich hatte nicht gewußt das man da auch einen Dateinamen angeben muss, dachte das Befehl macht das automatisch mit allen Dateien im Verzeichnis.
#!/usr/bin/perl $indir = "/texte/";
use File::Path;
chdir ("$indir"); foreach $file (glob("*.txt")) { $execme = "# iconv -f latin1 -t utf-8 $file >> $file_new"; open (iconver, "|$execme"); close(iconver);
}
Die # hab ich zu meiner Absicherung gesetzt :-)
Bin leider noch ziemlich unerfahren was skripte und konsolen Arbeit betrifft wie und wo muss ich das skrip eingeben damit es funktionert.
Du kopierst den Skripttext einfach in eine neue Datei (z.B. mit KWrite) und speicherst sie in _Deinem_ ~/bin Verzeichnis. Dann machst Du sie mit 'chmod 700' nur für den Besitzer ausführbar. Um mit dem oberen Skript arbeiten zu können, musst Du auch noch das Hash bzw. Doppelkreuz(#) vor dem 'iconv -f' entfernen.
Gruss, Andreas.
Hab ich gemacht leider bekomme ich wenn ich das skript aufrufe dann die meldung: /home/mario/bin/umwa: line 1: !/usr/bin/perl: No such file or directory /home/mario/bin/umwa: line 2: =: command not found /home/mario/bin/umwa: line 6: use: command not found /home/mario/bin/umwa: line 10: syntax error near unexpected token `"$indir"' /home/mario/bin/umwa: line 10: `chdir ("$indir"); ' warum klappt das nicht? ich bin in dem Verzeichnis gewesen in dem ich die Dateien umwandeln wollte und hab dann den Namen des Skripts (umwa) eingegeben. gruß Mario
Am Samstag, 1. Mai 2004 16:20 schrieb Mario Vogl:
Am Samstag, 1. Mai 2004 13:21 schrieb Andreas Scherer:
Am Freitag, 30. April 2004 22:43 schrieb mvsuse@sannyo.de:
convmv --notest -r -f latin1 -t utf-8 [...] Du kopierst den Skripttext einfach in eine neue Datei (z.B. mit KWrite) und speicherst sie in _Deinem_ ~/bin Verzeichnis. Dann machst Du sie mit 'chmod 700' nur für den Besitzer ausführbar. Um mit dem oberen Skript arbeiten zu können, musst Du auch noch das Hash bzw. Doppelkreuz(#) vor dem 'iconv -f' entfernen. [...] Hab ich gemacht leider bekomme ich wenn ich das skript aufrufe dann die meldung: /home/mario/bin/umwa: line 1: !/usr/bin/perl: No such file or directory /home/mario/bin/umwa: line 2: =: command not found /home/mario/bin/umwa: line 6: use: command not found /home/mario/bin/umwa: line 10: syntax error near unexpected token `"$indir"' /home/mario/bin/umwa: line 10: `chdir ("$indir"); '
warum klappt das nicht? ich bin in dem Verzeichnis gewesen in dem ich die Dateien umwandeln wollte und hab dann den Namen des Skripts (umwa) eingegeben.
Weil Du das Packet perl nicht installiert hast und dieses Skript in perl programmiert ist. ;-) Also installiere perl und dann läuft das auch. hth, Andreas.
Hallo, Am Sat, 01 May 2004, Mario Vogl schrieb:
leider bekomme ich wenn ich das skript aufrufe dann die meldung: /home/mario/bin/umwa: line 1: !/usr/bin/perl: No such file or directory
Vor das ! muss ein #. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
participants (4)
-
Andreas Scherer
-
David Haller
-
Mario Vogl
-
mvsuse@sannyo.de