0

我很难找到做我想做的事,在这里。

我想要做的是删除目录中的文件,当目录的内容超过 100MB(它是一个缓存文件)时。我以为我在阅读了手册页和其他几个类似但不同的问题后已经弄清楚了,但显然不是。如果可能的话,我希望它只删除超过 2 天的文件,但我对此并不太挑剔。

所以我到目前为止是:

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

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

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

我将其更改为:

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

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

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

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

4

3 回答 3

4

-type d从您的命令中删除。与type d您一起将删除限制在目录中。该命令永远不会触及文件。

find .cache/chromium/Default/Cache/ -mindepth 1 -size +100M -delete
于 2013-05-25T04:05:25.560 回答
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 | ... 此处的试运行代码 ...)。

于 2013-05-25T08:07:46.163 回答
0

而不是-deletefind .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.

于 2013-05-25T03:22:46.157 回答