Macos 如何在UNIX上递归删除目录中的所有隐藏文件?

Macos 如何在UNIX上递归删除目录中的所有隐藏文件?,macos,shell,unix,Macos,Shell,Unix,我已经搜索了一段时间,但似乎找不到一个简洁的解决方案。我有一个带有文件夹的Mac,我想清除所有隐藏的文件/目录-任何隐藏的东西。它曾经是一个包含大量.metadata/.svn内容的Eclipse工作区,我很乐意将其全部删除。我如何做到这一点(使用shell脚本、Applescript等)。提前多谢 find /path -iname ".*" -type f -delete ; 红宝石(1.9+) find-名称“.*”-打印 我不知道MAC OS,但在大多数*nix环境中都是这样 find

我已经搜索了一段时间,但似乎找不到一个简洁的解决方案。我有一个带有文件夹的Mac,我想清除所有隐藏的文件/目录-任何隐藏的东西。它曾经是一个包含大量.metadata/.svn内容的Eclipse工作区,我很乐意将其全部删除。我如何做到这一点(使用shell脚本、Applescript等)。提前多谢

find /path -iname ".*" -type f -delete ;
红宝石(1.9+)

find-名称“.*”-打印

我不知道MAC OS,但在大多数*nix环境中都是这样

find-名称“.*”-exec rm-rf{}\

为了摆脱他们首先查找并确保列表是您想要的,然后再将其全部删除


第一个
表示来自当前目录。另请注意,第二个
“*”
可以更改为
“.svn*”
或任何其他更具体的名称;上面的语法只会查找所有隐藏的文件,但您可以更具选择性。我一直使用它来删除旧代码中的所有.svn目录。

您需要非常小心并测试您使用的任何命令,因为您可能不想删除当前目录(
)、父目录(
)或所有文件

这应该只包括以点开头的文件和目录,不包括

find . -mindepth 1 -name '.*' -delete

我使用此命令删除空目录。它从底部开始,一直到顶部。因此,如果引用当前路径,它不会失败

find . -depth -type d -empty -exec rmdir {} \;
如果要删除目录,请将
-type f
更改为
-type d


如果要删除文件和目录,请删除
-键入f

,我发现这非常有效(至少在Linux上的Bash中):

您可以根据自己的喜好调整
sed
调用中的正则表达式

但是要小心:在我的例子中,我有许多名为
.gitignore
.gitkeep
的隐藏文件必须保留。一定要检查一下清单,看看里面有没有你想保留的东西

我发现这个变体非常有用,它可以删除像
\u ANYTHING
(通常是垃圾文件或tmp文件)这样的文件:


通过在
find
命令中指定
-typed
很容易做到这一点
-iname
在不需要时可能会稍微慢一点。如果包含
-键入d
和以
开头的名称,则可能会尝试删除名为
的当前目录。这将尝试删除当前目录(名为
)。20:53:27:jmquigley@shire:示例(主控):~/tmp~>查找-名称“.*”-exec rm-rf{}\;rm:无法删除目录:`。这一点很好(但它不会删除它,但它会标记它)。我给出了“.svn*”选项,这是一个更好的选项。(我讨厌这些编辑,哈哈,我想我无法格式化这些内容)。
find-名称“**”-print
将查找文件名中至少有一个点的任何文件。在mac(10.4)上,第二个命令应以“\;”结尾,而不是“/;”@jmq我想您是想使用反斜杠而不是前斜杠:
\对于包含空格的文件名,此操作失败。@Pauseduntilfurthernotice。我不明白为什么。它是在什么系统上失败的?
find . -depth -type d -empty -exec rmdir {} \;
rm -rf `find . -type f -regex '.*/\.+.+'`
find . -wholename '*/.*' -type f | sed -n '/\/\.[^\/]\+$/p' | xargs rm
find . -wholename '*/.*' -type f | sed -n '/\/\._[^\/]\+$/p' | xargs rm