递归重新编码所有项目文件,不包括某些目录并保留权限
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
)以查看是否只列出了您真正想要删除的文件。
如何递归重新编码所有项目文件不包括某些目录和保留权限?
基于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
)以查看是否只列出了您真正想要删除的文件。