それらすべてをコンパイルします。ディレクトリに移動し、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
enca
を探しているかもしれません :
Enca は非常に単純な文字セット アナライザーです。テキスト ファイルの文字セットとエンコーディングを検出し、組み込みのコンバーター、または libiconv、librecode、cstocs などの外部ライブラリとツールを使用して、それらを他のエンコーディングに変換することもできます。
現在、ベラルーシ語、ブルガリア語、クロアチア語、チェコ語、エストニア語、ハンガリー語、ラトビア語、リトアニア語、ポーランド語、ロシア語、スロバキア語、スロベニア語、ウクライナ語、中国語、およびいくつかのマルチバイト エンコーディングを言語ごとに個別にサポートしています。
一般に、現在のエンコーディングの自動検出は難しいプロセスであることに注意してください (同じバイト シーケンスが複数のエンコーディングで正しいテキストになる場合があります)。 enca
検出するように指示した言語に基づいてヒューリスティックを使用します (エンコーディングの数を制限するため)。 enconv
を使用できます テキスト ファイルを単一のエンコーディングに変換します。
標準の gnu utils ファイルと awk を使用して、必要なものを取得できます。例:
file -bi .xsession-errors
私に与えます:"text/plain; charset=us-ascii"
だから file -bi .xsession-errors |awk -F "=" '{print $2}'
「us-ascii」をくれます
次のようなスクリプトで使用します:
CHARSET="$(file -bi "$i"|awk -F "=" '{print $2}')"
if [ "$CHARSET" != utf-8 ]; then
iconv -f "$CHARSET" -t utf8 "$i" -o outfile
fi