【发布时间】:2018-05-29 10:57:14
【问题描述】:
我想用iconv 转换一些csv 文件的编码。它必须是一个脚本,所以我正在使用while; do done。该脚本列出了特定目录中的每个项目,并将它们转换为另一种编码(utf-8)。
目前,我的脚本列出了每个项目,包括目录...所以这是我的问题
iconv是否有目录问题或忽略它们?如果出现问题,我该如何仅列出/仅搜索文件?
我在每个项目的开头都尝试了How to list only files in Bash? 和***./***,这有点烦人(而且我的程序也不喜欢它)。
另一种可能性是ls -p | grep -v /,但这也会影响名称中带有 / 的文件,不是吗?
我希望你能帮助我。谢谢。
代码如下:
for item in $(ls directory/); do
FileName=$item
iconv -f "windows-1252" -t "UTF-8" FileName -o FileName
done
是的,我知道,输入和输出文件不能相同^^
【问题讨论】:
-
首先,不要解析
ls的输出。 第二……你的标题怎么会提到你的问题中完全没有的好方法? (链接不算数...) -
另外,据我所知,iconv 没有有选项
-o... -
对不起,你是对的。我确实有 find 的问题。 -maxdepth 1 -type f ,但这不是主要的。我编辑了标题。
-
Related answer 展示了您可以使用
find ... -exec做什么。这应该始终是首选路线,因为它不会拒绝空格或文件名中的换行等其他有趣的东西。 -
"另外,据我所见,iconv 没有选项“好吧,但是我将它与这个选项一起使用,它可以完美地工作并且符合预期。唯一的问题是我必须为这个命令提供一个 csv 文件列表......