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

Recursively recode all project files excluding some directories and preserving permissions

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

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

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

任务:

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