Bash脚本以recursion方式遍历文件夹并删除文件

任何人都可以给我一个bash脚本或一行命令,我可以运行在Linux上recursion地通过每个文件夹从当前的文件夹,并删除所有的文件或目录以“._”开头?

将目录切换到所需的根目录(或更改到目录)并执行:

 find . -name "._*" -print0 | xargs -0 rm -rf 

xargs允许你将几个参数传递给一个命令,所以它比使用find -exec语法更快。 另外,你可以在没有|情况下运行一次 要查看它将删除的文件,确保它是安全的。

 find . -name '._*' -exec rm -Rf {} \; 

我以前有过类似的问题(我假设你正在清理连接到Mac的驱动器,这样可以节省很多这些文件),所以我写了一个简单的python脚本,删除这些和其他无用的文件; 也许这对你有用:

http://github.com/houbysoft/short/blob/master/tidy

 find /path -name "._*" -exec rm -fr "{}" +; 

而不是删除AppleDouble文件,您可以将它们与相应的文件合并。 你可以使用dot_clean

dot_clean – 合并._ *文件与相应的本机文件。

对于每个目录,dot_clean根据给定参数指定的规则递归地将所有._ *文件与其相应的本机文件合并。 默认情况下,如果在._文件中也存在本地文件的属性,则将使用最近的属性。

如果没有给出操作数,则输出使用信息。 如果给出多个目录,则按照指定的顺序合并目录。

因为dot_clean默认递归工作,所以使用:

 dot_clean <directory> 

如果要关闭递归合并,请使用-f进行平面合并。

 dot_clean -f <directory> 

find . -name '.*' -delete

在文件列表非常长的情况下,缩短一点,性能更好。