Kompilace všech. Přejděte do adresáře, vytvořte dir2utf8.sh
:
#!/bin/bash
# converting all files in a dir to utf8
for f in *
do
if test -f $f then
echo -e "\nConverting $f"
CHARSET="$(file -bi "$f"|awk -F "=" '{print $2}')"
if [ "$CHARSET" != utf-8 ]; then
iconv -f "$CHARSET" -t utf8 "$f" -o "$f"
fi
else
echo -e "\nSkipping $f - it's a regular file";
fi
done
Možná hledáte enca
:
Enca je extrémně naivní analyzátor znakové sady. Detekuje znakovou sadu a kódování textových souborů a dokáže je také převést na jiná kódování pomocí vestavěného konvertoru nebo externích knihoven a nástrojů jako libiconv, librecode nebo cstocs.
V současné době podporuje běloruštinu, bulharštinu, chorvatštinu, češtinu, estonštinu, maďarštinu, lotyštinu, litevštinu, polštinu, ruštinu, slovenštinu, slovinštinu, ukrajinštinu, čínštinu a některá vícebajtová kódování nezávisle na jazyku.
Všimněte si, že obecně je autodetekce aktuálního kódování obtížný proces (stejná sekvence bajtů může být správným textem ve více kódováních). enca
používá heuristiku založenou na jazyku, který mu přikážete detekovat (k omezení počtu kódování). Můžete použít enconv
převést textové soubory do jediného kódování.
Co potřebujete, můžete získat pomocí standardního souboru gnu utils a awk. Příklad:
file -bi .xsession-errors
mi dává:"text/plain; charset=us-ascii"
takže file -bi .xsession-errors |awk -F "=" '{print $2}'
dává mi "us-ascii"
Používám to ve skriptech, jako je to:
CHARSET="$(file -bi "$i"|awk -F "=" '{print $2}')"
if [ "$CHARSET" != utf-8 ]; then
iconv -f "$CHARSET" -t utf8 "$i" -o outfile
fi