有没有人能给我一个bash脚本或一行命令,可以在Linux上递归地遍历当前文件夹中的每个文件夹,并删除所有以“._”开头的文件或目录?
切换到你想要的根目录(或将 .
更改为该目录),然后执行:
find . -name "._*" -print0 | xargs -0 rm -rf
xargs
允许您将多个参数传递给单个命令,因此比使用find -exec
语法更快。 此外,您可以一次运行此命令而不使用 |
来查看它将删除哪些文件,并确保它是安全的。
find
和xargs
的null-delimiter选项(find . -name "._*" -print0 | xargs -0 rm -rf
)可以避免这个问题。 - Gordon Davisson-delete
选项? - Michael Miorfind . -name '._*' -exec rm -Rf {} \;
./
而不是 /
。 - dreamlax不要删除AppleDouble文件,你可以将它们与相应的文件合并。你可以使用dot_clean
。
dot_clean -- 将._*文件与相应的本地文件合并。
对于每个目录,dot_clean会根据给定参数的规则递归地将所有的._*文件与它们相应的本地文件合并。默认情况下,如果本地文件上存在的属性也存在于._文件中,则使用最新的属性。
如果没有给出操作数,则输出一个用法消息。如果给出了多个目录,则按照指定的顺序合并目录。
由于dot_clean默认递归工作,请使用:
dot_clean <directory>
如果你想关闭递归合并,请使用-f
进行平面合并。
dot_clean -f <directory>
我之前也遇到过类似的问题(我猜你是在清理连接到 Mac 的驱动器,这些文件很多都是由 Mac 保存的),所以我写了一个简单的 Python 脚本来删除这些和其他无用的文件;也许对你有用:
find /path -name "._*" -exec rm -fr "{}" +;
find . -name '.*' -delete
如果文件列表非常长,这个命令会更短并且执行得更好。
.*
会删除你所有的点文件,而你需要它们!大家不要这样做,这是个坏主意。 - daviewales
._
文件被称为 AppleDouble 文件。在 Mac 系统中,文件有一个数据分支和一个资源分支。资源分支通常包含诸如图标、文件在文件夹中的空间位置(在 Finder 中)以及其他元数据等信息。数据分支(实际文件)包含实际重要数据,因此丢弃 AppleDouble 文件不应该成为问题。 - dreamlax