首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何递归地将mime编码(us-ascii )转换为utf-8

如何递归地将mime编码(us-ascii )转换为utf-8
EN

Unix & Linux用户
提问于 2021-12-07 05:47:48
回答 1查看 3.2K关注 0票数 0

我几乎没有us-ascii编码的文件。我想递归地将它们转换为utf-8

若要查找我使用的命令中的文件,请执行以下命令

代码语言:javascript
复制
find . -name "*.adoc" -type f -exec file --mime-encoding {} \; | grep -v ": us-ascii"

输出看起来就像

代码语言:javascript
复制
./sds.adoc: us-ascii
./docker/misc/terms.adoc: us-ascii
./docker/misc/tools.adoc: us-ascii
./docker/basics-containers.adoc: us-ascii
./web-scraping/links.adoc: us-ascii
./system-design/reference-architecture.adoc: us-ascii
./system-design/replication vs load balancing.adoc: us-ascii
./system-design/performance.adoc: us-ascii
./system-design/links.adoc: us-ascii
./system-design/disaster-recovery.adoc: us-ascii

要转换,我想,我必须使用iconv -f us-ascii file.adoc -t UTF-8 -o file.adoc

我不知道该怎么做。

EN

回答 1

Unix & Linux用户

发布于 2021-12-07 06:08:33

试着做这样的事情:

代码语言:javascript
复制
find . -name '*.adoc' -type f -execdir sh -c '
  for f; do
    file --mime-encoding "$f" | grep -qi us-ascii &&
      bn="$(basename "$f" .adoc)" && 
      iconv -f us-ascii "$f" -t UTF-8 -o "$bn-utf8.adoc"
  done' sh {} +

这将将cd放入每个包含.adoc文件的目录中(对于该目录中的每个.adoc文件),如果file指示文件为use,则使用iconv将其转换为utf-8 (具有不同的输出文件名)。

注意:-execdir选项是非标准的,需要find的GNU或BSD版本。GNU是Linux上的标准。

如果要用utf-8版本替换原来的us-ascii文件,请将&&添加到iconv行的末尾,并在其后面添加以下行:

代码语言:javascript
复制
  mv "$bn-utf8.adoc" "$f"
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/680449

复制
相关文章

相似问题

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