Hallo zusammen,
ich bin grade dabei auf meine Linux Server etwas aufzuräumen, Unteranderem habe ich verschiedene Charsset in in meinem webverzeichnis entdeckt.
Mein Grundgedanke war mit folgenden Befehlen in der sh zu arbeiten: find, awk, file, iconv.
Mit find . -regex '.*\.php' Suche ich nur nach PHP-Dateien, um fälschliches überschreiben von Grafiken zu verhindern. Im Zweiten Durchlauf werde ich nur noch nach html Suchen. Der Anhängsel find . -regex '.*\.php' -exec file {} --mime-encoding \; sorgt für die Ausgabe des Dateinamens sowie der Charset der Datei, in meinem Fall iso-8859-1 und us-ascii.
Die Ausgabe von find übergebe ich an file. Hierfür wird der hinhalt {} von find gefüllt.
Momentan sieht der Rückgabewert wie folgt aus:
Nun gehts weiter mit awk -F: '{}'. Hier wird die ausgabe zerteil, in 2 Variablen, $1(= Dateiname) $2(=Charset iso-8859-1). Mit dem Parameter -F: verhinde ich, dass nach Variablen ein Doppelpunkt kommt. Nun kommt das eigentliche Problem, bei der weitergabe an iconv.
Laut #man iconv steht -f from_charset -t to_charset -o output_file input_file
wenn ich es nun Händisch eingebe z. B.
Wird keine ausgabe erzeugt jedoch die Datei angelegt.
Nun zu meiner eigentlichen Frage:
Weiß vielleicht jemand weiter, warum bei der übergabe von awk an iconv ein Fehler auftritt?
Greez F0rris
ich bin grade dabei auf meine Linux Server etwas aufzuräumen, Unteranderem habe ich verschiedene Charsset in in meinem webverzeichnis entdeckt.
Mein Grundgedanke war mit folgenden Befehlen in der sh zu arbeiten: find, awk, file, iconv.
Code:
find . -regex '.*\.php' -exec file {} --mime-encoding \; | awk -F: '{iconv -f $2 -t utf-8 -o $1.new $1 }'
Mit find . -regex '.*\.php' Suche ich nur nach PHP-Dateien, um fälschliches überschreiben von Grafiken zu verhindern. Im Zweiten Durchlauf werde ich nur noch nach html Suchen. Der Anhängsel find . -regex '.*\.php' -exec file {} --mime-encoding \; sorgt für die Ausgabe des Dateinamens sowie der Charset der Datei, in meinem Fall iso-8859-1 und us-ascii.
Die Ausgabe von find übergebe ich an file. Hierfür wird der hinhalt {} von find gefüllt.
Momentan sieht der Rückgabewert wie folgt aus:
Code:
root@gr:/var/www/test# find . -regex '.*\.php' -exec file {} --mime-encoding \;
./index.php: iso-8859-1
./config.php: us-ascii
[...]
Nun gehts weiter mit awk -F: '{}'. Hier wird die ausgabe zerteil, in 2 Variablen, $1(= Dateiname) $2(=Charset iso-8859-1). Mit dem Parameter -F: verhinde ich, dass nach Variablen ein Doppelpunkt kommt. Nun kommt das eigentliche Problem, bei der weitergabe an iconv.
Laut #man iconv steht -f from_charset -t to_charset -o output_file input_file
wenn ich es nun Händisch eingebe z. B.
Code:
root@gr:/var/www/test#iconv -f iso-8859-1 -t utf-8 -o ./newsletter.php.new ./newsletter.php
Nun zu meiner eigentlichen Frage:
Weiß vielleicht jemand weiter, warum bei der übergabe von awk an iconv ein Fehler auftritt?
Greez F0rris
Zuletzt bearbeitet: