ubuntuusers.de

iconv - Zeichensatz automatisch verwenden

Status: Ungelöst | Ubuntu-Version: Kubuntu 10.04 (Lucid Lynx)
Antworten |

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Hallo zusammen,

da ich zwangsweise noch Windows verwenden muß, das ich über VirtualBox starte, synchronisiere ich auch regelmäsig wichtige Daten.

Dabei werden bei Textdateien und ein paar anderen, Selbstlaute (äöüß) anschließend nicht angezeigt und behebe dies anschließend mit iconv.

Nun habe ich mir überlegt, ob es nicht möglich ist, dies zu automatisieren und evtl. auch automatisch der richtige Zeichensatz dafür ausgewäht wird.

Ich habe hier //wiki.ubuntuusers.de/Skripte/Zeichensatzkonvertierung#Bash: mal ein Script gefunden, das in diese Richtung gehen sollte, aber irgendwie bei mir nicht funktioniert.

Da mit iconv nur Dateien verarbeitet, die vorher iconv bekannt gegeben werden und die zu konvertierenden Dateien in der Regel in verschiedenen Ordner liegen, habe ich mir überlegt, ob man nicht mit einem Script das automatisieren könnte.

Hier mein Script

#!/bin/bash
#
# Sucht alle Ordner nach Dateien durch.
Such=$(find /home/user/1/* -type f)

# Sucht alle Ordner nach Dateien durch und erstellt eine Datei "such", in der die Dateien aufgelistet werden..
find /home/user/1/* -type f -print > /home/whtb/1/such
TD="/home/user/1/such"

# Dateinamen werden an $TDFILE übergeben.
TDFILE=$(cat ${TD} | while read; do
ARRAY_NAME=($REPLY)
echo $(basename ${ARRAY_NAME})
done
)

# Pfade werden an $TDDIR übergeben.
TDDIR=$(cat ${TD} | while read; do
ARRAY_NAME=($REPLY)
echo $(dirname ${ARRAY_NAME})
done
)

# Visuelle Ausgabe im Terminal.
echo $Such
echo $TDFILE
echo $TDDIR

# Übergeben der Pfade an $PFAD, in den Dateien enthalten sind.
if [ "$Such" = "*/$TDFILE" ];then
    PFAD=$(dirname "$Such")
    echo $Such
fi

# Überprüfung der Dateien, ob in einen anderen Zeichensatz konvertiert werden muß und von welchem Zeichensatz aus konvertiert wird.
# Funktioniert noch nicht, noch in Bearbeitung.
for env in $( iconv -l | sed 's/..$//' )
do
	iconv -f $env -t utf-8 $TDFILE  2>/dev/null | grep "$TDFILE" && echo $env;
done

Bis auf den letzten, wichtigen Abschnitt des Scriptes funktioniert es so weit.

Leider bin ich kein Profi im Script schreiben und hoffe daher auf Eure Hilfe und Mitwirkung!

Danke im voraus.

Grüße Nobuddy

Antworten |