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