我正在尝试查找所有具有编码iso-8859-1的文本文件,并将它们转换为UTF-8.我到目前为止的尝试是:
find . -name '*.txt' | xargs grep 'iso-8859-1' | cut -d ':' -f1 |
xargs iconv -f ISO-8859-1 -t UTF-8 {} > {}.converted
Run Code Online (Sandbox Code Playgroud)
(显而易见的)问题是最后一个变量替换不起作用,因为{}在重定向之后发生,并且不属于xargs.因为我只得到一个文件{}.converted,而不是 a.txt.converted,b.txt.converted等等.我怎样才能使这个工作?
注意:我在Cygwin上这样做,其中iconv似乎不支持-o.
如果您安装了 GNU Parallel http://www.gnu.org/software/parallel/,您可以执行以下操作:
find . -name '*.txt' | parallel grep -il iso-8859-1 | parallel iconv -f ISO-8859-1 -t UTF-8 {} \> {}.converted
Run Code Online (Sandbox Code Playgroud)
您可以简单地通过以下方式安装 GNU Parallel:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
Run Code Online (Sandbox Code Playgroud)
观看 GNU Parallel 的介绍视频以了解更多信息: https://www.youtube.com/playlist?list =PL284C9FF2488BC6D1
| 归档时间: |
|
| 查看次数: |
3510 次 |
| 最近记录: |