いくつかのSQLファイルをISO8859-1からUTF-8に変換しようとしています
次のコマンドを実行しています:
iconv -f ISO_8859-1 -t UTF-8 *.sql
私が得るのは、非常に長い端末へのコンテンツの出力であり、出力を終了した後は変換されません。彼らは同じままです。出力を表示せずに変換できるようにしたいと思います。
iconv
は、デフォルトで出力をstdoutに送信します。これは、見たものの動作を説明します。 -o
オプションを使用して出力をファイルに送信できますが、それは単一の出力ファイルを生成するだけであり、ファイルを所定の場所に更新することはおそらく役に立ちません。おそらく次のようなものを試してください:
for file in *.sql; do
iconv -f ISO-8859-1 -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
done
これにより、各ファイルが変換され、結果が一時ファイルに保存され、変換が成功した場合は元のファイル名に移動されます。
このタスクにrsyncを使用することもできます。1つの利点は、バックアップを保持することです。変換されたファイルの1つが既にターゲットコード化にある場合、それを台無しにします。
rsync -va --iconv=iso88591,utf8 /source/latin1/ /destination/utf8/