任何人都可以给我一个bash脚本或一行命令我可以在linux上运行以递归方式从当前文件夹中浏览每个文件夹并删除以“._”开头的所有文件或目录吗?
答案 0 :(得分:14)
将目录更改为所需的根目录(或将.
更改为目录)并执行:
find . -name "._*" -print0 | xargs -0 rm -rf
xargs
允许您将多个参数传递给单个命令,因此它比使用find -exec
语法更快。此外,您可以在没有|
的情况下运行此操作一次,以查看它将删除的文件,确保它是安全的。
答案 1 :(得分:3)
find . -name '._*' -exec rm -Rf {} \;
答案 2 :(得分:0)
我前一段时间遇到过类似的问题(我假设您正在尝试清理连接到Mac的驱动器,这会保存很多这些文件),所以我编写了一个简单的python脚本来删除这些和其他无用的文件;也许它会对你有用:
答案 3 :(得分:0)
find /path -name "._*" -exec rm -fr "{}" +;
答案 4 :(得分:0)
您可以将它们与相应的文件合并,而不是删除AppleDouble文件。您可以使用dot_clean
。
dot_clean - 将._ *文件与相应的本机文件合并。
对于每个目录,dot_clean根据给定参数指定的规则递归地将所有._ *文件与其对应的本机文件合并。默认情况下,如果._文件中也存在本机文件的属性,则将使用最新的属性。
如果没有给出操作数,则输出用法消息。如果给出了多个目录,则按照指定目录的顺序合并目录。
因为dot_clean默认递归工作,所以使用:
dot_clean <directory>
如果要关闭递归合并,请使用-f
进行平面合并。
dot_clean -f <directory>
答案 5 :(得分:-4)
find . -name '.*' -delete
如果极长文件列表,则会更短,性能更好。