批量转换编码并覆盖:
find *.cue -exec sh -c "iconv -f GB18030 -t UTF8 {} -o {}" \;
find到含空格文件名的处理方法:
find *.cue -print0 | xargs -0 rm -rf
如何结合两者呢?在避免空格文件名的同时批量转码
批量转换编码并覆盖:
find *.cue -exec sh -c "iconv -f GB18030 -t UTF8 {} -o {}" \;
find到含空格文件名的处理方法:
find *.cue -print0 | xargs -0 rm -rf
如何结合两者呢?在避免空格文件名的同时批量转码
@needle 已经写的很好了.
另外,我也遇到类似的问题了,参考:
http://segmentfault.com/q/1010000002464556/a-1020000002464697
1 回答1.8k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
2 回答870 阅读
989 阅读
892 阅读
878 阅读
-exec和xargs是普遍的两种 将命令组合使用的方式:
使用-exec的方式安全,不怕空格文件(其他特殊符号未测,应该也没问题):
find . -maxdepth 1 -name '[星号].cue' -exec iconv -f GB18030 -t UTF8 {} -o {} \;
btw, 原来{}还可以使用两次啊~,真没试过,呵呵。
而使用xargs的方式,因易理解而更被人熟知,
在不加特别的参数的情况下,缺点就是空格文件处理得不好(其他特殊符号未测,应该也有问题):
于是分别有了-print0和-0选项,
表示不以空格判断字串的结束,而是以\0分隔(这样就可无视任何特殊字符的影响):
find . -maxdepth 1 -name '[星号].cue' -print0 | xargs -0 rm -rfv