我在找到我想做的事情时遇到了一些麻烦。
当我的目录内容超过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。
答案 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 | ...这里的干运行代码......)。