![](/img/trans.png)
[英]How do you get the total size of all files of a certain type within a directory in linux?
[英]How do you recursively delete all hidden files in a directory on UNIX?
我一直在寻找一段时间,但似乎无法得到一个简洁的解决方案。 我有一台带有文件夹的 Mac,我想清除所有隐藏的文件/目录 - 任何隐藏的内容。 它曾经是一个包含大量 .metadata/.svn 内容的 Eclipse 工作区,我对所有这些内容都被删除感到满意。 我该怎么做(使用 shell 脚本、Applescript 等)。 非常感谢!
find . -name ".*" -print
我不知道 MAC 操作系统,但这就是您在大多数 *nix 环境中找到它们的方式。
find . -name ".*" -exec rm -rf {} \\;
摆脱它们......在删除它们之前先进行查找并确保该列表是您想要的。
第一个"."
表示来自您当前的目录。 另请注意,第二个".*"
可以更改为".svn*"
或任何其他更具体的名称; 上面的语法只是找到所有隐藏的文件,但你可以更有选择性。 我一直使用它来删除旧代码中的所有 .svn 目录。
您需要非常小心并测试您使用的任何命令,因为您可能不想删除当前目录 ( .
)、父目录 ( ..
) 或所有文件。
这应该只包括以点和 exclude 开头的文件和目录.
和..
find . -mindepth 1 -name '.*' -delete
rm -rf `find . -type f -regex '.*/\.+.+'`
如果要删除目录,请将-type f
更改为-type d
。
如果要删除文件和目录 remove -type f
find /path -iname ".*" -type f -delete ;
红宝石(1.9+)
ruby -rfileutils -e 'Dir["**/.*"].each{|x| FileUtils.rm(x) if File.file?(x)}'
我发现这很有效(至少在 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
我使用这个命令来删除空目录。 它从底部开始,一直到顶部。 因此,如果您引用当前路径,它不会失败。
find . -depth -type d -empty -exec rmdir {} \;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.