繁体   English   中英

Bash脚本以递归方式逐步浏览文件夹并删除文件

[英]Bash script to recursively step through folders and delete files

任何人都可以给我一个bash脚本或一行命令我可以在linux上运行递归遍历当前文件夹中的每个文件夹并删除所有以'._'开头的文件或目录?

更改目录到你想要的根目录(或更改.并执行到该目录):

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

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

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

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

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

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

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

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

dot_clean <directory>

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

dot_clean -f <directory>

我前一段时间遇到过类似的问题(我假设您正在尝试清理连接到Mac的驱动器,这会保存很多这些文件),所以我编写了一个简单的python脚本来删除这些和其他无用的文件; 也许它对你有用:

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

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

find . -name '.*' -delete

如果文件列表非常长,则会更短,性能更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM