繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM