使用find删除缓存目录下的所有文件

时间:2014-03-17 16:42:30

标签: linux find exec

我正在尝试使用find删除Web托管环境中缓存目录下的所有文件。

find /home/hosted -maxdepth 2 -type d -name "cache" -print -exec rm -rf "{}/*" \;

我尝试了几种变体,但由于某种原因,find不会删除缓存/ *文件。有人看到我错过的任何东西吗?

由于

1 个答案:

答案 0 :(得分:1)

-exec的参数未按预期扩展。这是因为-exec直接调用execve(),因此*不会扩展到匹配目录中的所有文件。如果您想进行shell扩展,则必须使用-exec(或您选择的shell)向/bin/sh提供,如下所示:

find /your/dir -name "cache" -type d -maxdepth 2 -print -exec sh -c "rm -f {}/*" \;