skripting-section:bash:utf8-converter

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
skripting-section:bash:utf8-converter [2017/09/11 11:10] michaelskripting-section:bash:utf8-converter [2017/09/11 13:58] (current) – [Löschen der *.backup files] michael
Line 28: Line 28:
  
 ---- ----
 +
 +==== Fix für nicht konvertierte Inhalte der Dateien ====
 +
  
 Um zu überprüfen, ob die Konvertierung auch für alle Files erfolgreich durchgelaufen ist, kann folgender Promt gebraucht werden: Um zu überprüfen, ob die Konvertierung auch für alle Files erfolgreich durchgelaufen ist, kann folgender Promt gebraucht werden:
  
 <code># cd /data/webhome/bullnix-int.post.ch/pages/foswiki/data/ <code># cd /data/webhome/bullnix-int.post.ch/pages/foswiki/data/
-# find . -name "*.txt"  | while read F; do cat $F  | hexdump -C | cut -b11-60 |  egrep -q "(c4|d6|dc|e4|e7|e8|e9|ea|f4|fc|f6)"; if [ $? -eq 0 ]; then echo "$F : ISO";  fi; done</code>+# find . -name "*.txt"  | while read F; do cat "$F | hexdump -C | cut -b11-60 |  egrep -q "(c4|d6|dc|e4|e7|e8|e9|ea|f4|fc|f6)"; if [ $? -eq 0 ]; then echo "$F : ISO";  fi; done</code>
  
 Falls dieser Befehl nun Fehler ausgibt, kann folgendes Skript verwendet werden um diese zu korrigieren. Falls dieser Befehl nun Fehler ausgibt, kann folgendes Skript verwendet werden um diese zu korrigieren.
Line 46: Line 49:
 for file_to_fix in $( find . -name "*.*" ); do for file_to_fix in $( find . -name "*.*" ); do
  
-        cat $file_to_fix  | hexdump -C | cut -b11-60 |  egrep -q "(c4|d6|dc|e4|e7|e8|e9|ea|f4|fc|f6)";+        #Detect ISO encodings in files via hexdump: 
 +        cat "$file_to_fix | hexdump -C | cut -b11-60 |  egrep -q "(c4|d6|dc|e4|e7|e8|e9|ea|f4|fc|f6)";
         if [ $? -eq 0 ]; then         if [ $? -eq 0 ]; then
  
                 echo "$file_to_fix : ISO";                 echo "$file_to_fix : ISO";
-                iconv -f ISO-8859-15 -t UTF-8 $file_to_fix > temp_Convert.txt; cp temp_Convert.txt $file_to_fix+                iconv -f ISO-8859-15 -t UTF-8 "$file_to_fix> temp_Convert.txt; cp temp_Convert.txt "$file_to_fix"
  
-                sed -ri 's/\\xFC/ü/g' $file_to_fix +                sed -ri 's/\\xFC/ü/g' "$file_to_fix" 
-                sed -ri 's/\\xE4/ä/g' $file_to_fix +                sed -ri 's/\\xE4/ä/g' "$file_to_fix" 
-                sed -ri 's/\\xF6/ö/g' $file_to_fix+                sed -ri 's/\\xF6/ö/g' "$file_to_fix"
  
-                sed -ri 's/\\xC4/Ä/g' $file_to_fix +                sed -ri 's/\\xC4/Ä/g' "$file_to_fix" 
-                sed -ri 's/\\xDC/Ü/g' $file_to_fix +                sed -ri 's/\\xDC/Ü/g' "$file_to_fix" 
-                sed -ri 's/\\xD6/Ö/g' $file_to_fix+                sed -ri 's/\\xD6/Ö/g' "$file_to_fix"
  
-                sed -ri 's/\\1E9E/ẞ/g' $file_to_fix +                sed -ri 's/\\1E9E/ẞ/g' "$file_to_fix" 
-                sed -ri 's/\\xDF/ß/g' $file_to_fix+                sed -ri 's/\\xDF/ß/g' "$file_to_fix"
  
-                sed -ri 's/\\xE9/é/g' $file_to_fix +                sed -ri 's/\\xE9/é/g' "$file_to_fix" 
-                sed -ri 's/\\xE8/è/g' $file_to_fix +                sed -ri 's/\\xE8/è/g' "$file_to_fix" 
-                sed -ri 's/\\xEA/ê/g' $file_to_fix+                sed -ri 's/\\xEA/ê/g' "$file_to_fix"
  
-                sed -ri 's/\\xE7/ç/g' $file_to_fix +                sed -ri 's/\\xE7/ç/g' "$file_to_fix" 
-                sed -ri 's/\\xC7/Ç/g' $file_to_fix+                sed -ri 's/\\xC7/Ç/g' "$file_to_fix"
  
                 #iconv -f ISO-8859-15 -t UTF-8 $file_to_fix > temp_Convert.txt; cp temp_Convert.txt $file_to_fix                 #iconv -f ISO-8859-15 -t UTF-8 $file_to_fix > temp_Convert.txt; cp temp_Convert.txt $file_to_fix
Line 75: Line 79:
  
 </sxh> </sxh>
 +
 +----
 +
 +==== Unix Filenamen Korrektur ====
 +
 +<wrap hi>Werden Filenamen etwa so: **DruckerHinzuf▒gen.txt** und nicht so: **DruckerHinzufügen.txt**, müssen diese korrigiert werden!</wrap>
 +
 +Bei wenigen Dateien kann diese Umbenennung von Hand erfolgen. Was aber, wenn sehr viele Dateinamen zu korrigieren sind? Auch hier ist bereits ein geeignetes Linux-Utility vorhanden: ****convmv****. Mit dem Befehl
 +
 +
 +<code>
 +# convmv -f iso-8859-15 -t utf-8 --notest -r /data/webhome/bullnix-int.post.ch/pages/foswiki/data
 +</code>
 + 
 +
 +werden im angegeben Verzeichnis die ''**Dateinamen** vom Zeichensatz **ISO-8859-15** in den Zeichensatz **UTF-8** konvertiert''. Mit dem Schalter -r kann diese Aufgabe auch gleich für alle darunterliegenden Verzeichnisse ausgeführt werden. //Sollte das Utility nicht bereits auf dem Rechner installiert worden sein, kann es über yum mit dem Befehl: ''# yum install convmv'' installiert werden.//
 +
 +----
 +
 +==== Löschen der *.backup files ====
 +
 +<wrap em>Endgültiges löschen aller *.backup files aus allen Unterverzeichnissen!</wrap>
 +
 +<code># cd /data/webhome/bullnix-int.post.ch/pages/foswiki/data
 +# find . -name "*.backup"  | while read F; do echo $F; rm -f $F; done</code>
  • skripting-section/bash/utf8-converter.1505121035.txt.gz
  • Last modified: 2017/09/11 11:10
  • by michael