超过100 MB时,使用find删除目录内容

时间:2013-05-25 03:16:24

标签: linux bash find

我在找到我想做的事情时遇到了一些麻烦。

当我的目录内容超过100MB(这是一个缓存文件)时,我要做的就是删除目录中的文件。我认为在阅读完手册后我已经把它弄出来了,还有其他几个相似但不同的问题,但显然不是。如果可能的话,我希望它只删除超过2天的文件,但我并不过分挑剔。

所以到目前为止我所拥有的是:

$ find .cache/chromium/Default/Cache/ -type d -mindepth 1 -size +100M -mtime 2 -delete

但是当我尝试运行它时,它给了我以下内容:

find:warning:你在非选项参数-type之后指定了-mindepth选项,但是选项不是位置的(-mindepth影响在它之前指定的测试以及之后指定的测试)。请在其他参数之前指定选项。

我把它改为:

$ find .cache/chromium/Default/Cache/ -mindepth 1 -type d -size +100M -delete

这没有给我任何警告,但没有删除任何东西。

关于我做错的任何建议/指导?

[edit]目前,该目录位于433M。

3 个答案:

答案 0 :(得分:4)

从命令中删除-type d。使用type d,您将删除仅限于目录。该命令永远不会触及文件。

find .cache/chromium/Default/Cache/ -mindepth 1 -size +100M -delete

答案 1 :(得分:0)

而不是-delete

中的find .cache/chromium/Default/Cache/ -mindepth 1 -type d -size +100M -delete

尝试find .cache/chromium/Default/Cache/ -mindepth 1 -type d -size +100M -exec rm -rf {} \; -exec rm -rf {} \;(需要';')将结果直接传递给rm

答案 2 :(得分:0)

我已经尝试模拟您当前的方案,这是我如何删除已经超过100MB +的文件:

find .cache/chromium/Default/Cache/ -type d -print0 | du -h | grep '[0-9]\{3\}M' | cut -f2 | grep -v '^.$' | xargs -I directory rm -rfv directory

首先,为什么find无法找到超过100MB的目录,因为当你尝试列出目录时,它只会列出大约4KB(4096)的目录。 find命令只检查目录的大小---它不包括目录下的内部文件。

在运行命令之前,尝试使用 echo 命令对其进行干运行。

find .cache/chromium/Default/Cache/ -type d -print0 | du -h | grep '[0-9]\{3\}M' | cut -f2 | grep -v '^.$' | xargs -I directory echo directory

更新了 -type d 参数。 还有一点更新尝试将当前工作目录更改为搜索路径:

cd .cache/chromium/Default/Cache/

并执行命令:(查找。-type d -print0 | ...这里的干运行代码......)。