我一直在寻找一段时间,但似乎无法得到一个简洁的解决scheme。 我有一个Mac文件夹,我想清除所有隐藏的文件/目录 – 任何隐藏的。 它曾经是一个有很多.metadata / .svn东西的Eclipse工作区,我很好,所有的东西都被删除了。 我怎么能做到这一点(无论是与shell脚本,苹果脚本等)。 提前感谢!
find . -name ".*" -print
我不知道MAC OS,但是这就是你在大多数* nix环境中找到它们的方法。
find . -name ".*" -exec rm -rf {} \;
摆脱他们… 做第一次查找,并确保列表是你想要的,然后再删除它们 。
第一个"."
意味着从你当前的目录。 还要注意第二个".*"
可以改成".svn*"
或其他更具体的名字; 上面的语法只是找到所有隐藏的文件,但是你可以更有选择性。 我一直用这个来删除旧代码中的所有.svn目录。
由于您可能不想删除当前目录( .
),父目录( ..
)或所有文件,因此您需要非常小心并测试您使用的任何命令。
这应该只包括以点和排除开头的文件和目录.
和..
find . -mindepth 1 -name '.*' -delete
rm -rf `find . -type f -regex '.*/\.+.+'`
如果要删除目录,请将type -d
更改为-type f
。
如果要删除文件和目录,请删除type -f
find /path -iname ".*" -type f -delete ;
红宝石(1.9+)
ruby -rfileutils -e 'Dir["**/.*"].each{|x| FileUtils.rm(x) if File.file?(x)}'
我使用这个命令来删除空目录。 它从底部开始,到达顶端。 所以,如果您引用当前路径,则不会失败。
find . -depth -type d -empty -exec rmdir {} \;
我发现这工作得很好(至少在Linux上Bash):
find . -wholename '*/.*' -type f | sed -n '/\/\.[^\/]\+$/p' | xargs rm
你可以在sed
调用正则表达式来调整你的喜好。
但要小心:在我的情况下,我有很多隐藏文件名为.gitignore
或.gitkeep
必须保留。 一定要检查清单,看是否有任何你想保留的东西。
我发现这个变体非常有用,它删除了像._ANYTHING
(经常是垃圾或tmp文件)的文件:
find . -wholename '*/.*' -type f | sed -n '/\/\._[^\/]\+$/p' | xargs rm