19

次を使用して、OSXで単一のファイルエンコーディングを変換できることを知っています。

iconv -f ISO-8859-1 -t UTF-8 myfilename.xxx > myfilename-utf8.xxx

特定の拡張子を持つ一連のファイルを変換する必要があるため、フォルダー /mydisk/myfolder 内のすべての *.ext ファイルのファイル エンコーディングを ISO-8859-1 から UTF-8 に変換したい

おそらく誰かがこれを行う方法を構文を知っています

ありがとう

エッケ

4

7 に答える 7

25

Adam のコメントは、それを解決する方法を教えてくれましたが、これは私がそれを機能させた唯一の構文でした:

find /mydisk/myfolder -name \*.xxx -type f | \
    (while read file; do
        iconv -f ISO-8859-1 -t UTF-8 "$file" > "${file%.xxx}-utf8.xxx";
    done);

-i ... -o ... うまくいきませんが >

thxまた

エッケ

于 2009-07-26T21:42:34.430 に答える
2

これは、mac 10.10 でテストされた例です。名前でファイルを検索し、エンコードを変換してから、元のファイルを置き換えます。完璧に機能します。Roman Truba の例に感謝します。以下の完全なコードをシェル スクリプトにコピーします。

   #!/bin/bash
        find ./ -name *.java -type f | \
        (while read file;
            do if [[ "$file" != *.DS_Store* ]]; then
            if [[ "$file" != *-utf8* ]]; then
                iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file-utf8";
                rm $file;
                echo mv "$file-utf8" "$file";
                mv "$file-utf8" "$file";
            fi
        fi 
        done);
于 2014-10-14T22:57:46.323 に答える
1

これを試してください...テスト済みで動作しています:

最初のステップ (ICONV): 検索 /var/www/ -name *.php -type f | (ファイルの読み込み中; do iconv -f ISO-8859-2 -t UTF-8 "$file" > "${file%.php}.phpnew"; done)

2 番目のステップ (REWRITE - MV): find /var/www/ -name "*.phpnew" -type f | (ファイルの読み取り中; do mv $file echo $file | sed 's/\(.*\.\)phpnew/\1php/'; 完了)

それは私の研究の単なる結論です:)

それがJakub Rulecに役立つことを願っています

于 2011-01-10T19:13:08.150 に答える
0

任意のスクリプト言語でスクリプトを記述して、/mydisk/myfolder 内のすべてのファイルを反復処理し、正規表現 [.(.*)$] で拡張子を確認し、「ext」の場合は、次の (または同等の) を実行できます。システムコール。

"iconv -f ISO-8859-1 -t UTF-8" + file.getName() + ">" + file.getName() + "-utf8.xxx"

これは Python では数行にすぎませんが、ディレクトリの繰り返しと正規表現の検索の詳細については、読者の演習として残しておきます。

于 2009-07-25T13:00:02.893 に答える