如何递归重新编码所有项目文件不包括某些目录和保留权限?
答案 0 :(得分:0)
基于this问题,但其解决方案不保留权限,因此我不得不对其进行修改。
警告:由于递归删除是解决方案的一部分,自行承担风险
任务:
递归重新编码所有项目文件(iso8859-8 - > utf-8)不包括'。git'和'.idea'dirs以及保留权限。
解决方案(在我的情况下运作良好):
备份项目的目录,然后cd
。运行:
find . -not -path "./.git/*" -not -path "./.idea/*" -type f -print -exec iconv -f iso8859-8 -t utf-8 -o {}.converted {} \; -exec sh -c 'cat {}.converted > {}' \; -exec rm {}.converted \;
二进制文件和图像文件将无法重新编码,因为它们不是文本,因此像'image.jpeg.converted'这样的文件将与'image.jpeg'一起保留。要清理这个烂摊子:
find . -not -path "./.git/*" -not -path "./.idea/*" -type f -regex '.*\.converted' -exec rm {} \;
在您这样做之前,您可能只想打印(没有rm
),看到只列出了您真正要删除的文件。