如何递归地重新编码所有项目文件,不包括某些目录并保留权限?
1 回答
基于这个问题,但它的解决方案不保留权限,所以我不得不修改它。
警告:由于递归删除是解决方案的一部分,使用它需要您自担风险
任务:
递归地重新编码所有项目文件(iso8859-8 -> utf-8) ,不包括“.git”和“.idea”目录并保留权限。
解决方案(在我的情况下效果很好):
备份你的项目的目录,然后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
)以查看仅列出了您真正想要删除的那些文件。