首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >osx更改文件编码(iconv)递归

osx更改文件编码(iconv)递归
EN

Stack Overflow用户
提问于 2009-07-25 12:44:13
回答 6查看 23.8K关注 0票数 19

我知道我可以在OSX下使用以下命令转换单个文件编码:

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

我必须转换一堆具有特定扩展名的文件,所以我希望将文件夹/mydisk/myfolder中所有*.ext文件的文件编码从ISO-8859-1转换为UTF-8

也许有人知道该怎么做的语法

谢谢

ekke

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-07-26 21:42:34

Adam的评论向我展示了如何解决它的方法,但这是我让它工作的唯一语法:

代码语言:javascript
复制
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

ekke

票数 25
EN

Stack Overflow用户

发布于 2009-07-25 13:23:00

如果您的shell是bash,则如下所示

代码语言:javascript
复制
for files in /mydisk/myfolder/*.xxx
do
  iconv -f ISO-8859-1 -t UTF-8 "$files" "${files%.xxx}-utf8.xxx"
done
票数 3
EN

Stack Overflow用户

发布于 2014-10-15 06:57:46

下面是在Mac10.10上测试的例子。找到文件的名称,转换编码,然后取代原来的file.work完美。感谢Roman Truba的例子,将下面的完整代码复制到您的shell脚本中。

代码语言:javascript
复制
   #!/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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1182037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档