0

如何递归地重新编码所有项目文件,不包括某些目录保留权限

4

1 回答 1

0

基于这个问题,但它的解决方案不保留权限,所以我不得不修改它。

警告:由于递归删除是解决方案的一部分,使用它需要您自担风险

任务:

递归地重新编码所有项目文件(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)以查看仅列出了您真正想要删除的那些文件。

于 2015-06-05T10:15:44.693 回答