我有我的基准文件夹(我们称之为基准)。
我里面有一堆文件夹,这些文件夹内的各个深度分散着缓存文件夹。
我想删除缓存文件夹中的所有文件,但不删除文件夹本身。
我努力了
cd base
#then one of...
sudo rm -rf cache/*
sudo rm -rf *cache/*
sudo rm -rf cache*/*
sudo rm -rf *cache*/*
但实际上我只是猜测,正确的命令是什么?
答案1
答案2
cache
这将从文件夹 开始递归删除名为 的文件夹中的所有文件base
。cache
文件夹本身仍将保持完整,但每个文件夹内的所有文件都将被删除。
find base -ipath "*/cache/*" -type f -delete
答案3
您可以使用极其强大的查找命令。
我会使用这样的东西:
find . -iname *cache* -ok rm -rf {} \;
现在让我来为你解释一下。Find 是应用程序的名称,它有很多选项,但对你来说,你不需要很多。
意思.
是查看当前目录。这意味着你必须在正确的目录中开始。我假设你~
-iname
意味着搜索我的不区分大小写的名字。
*cache*
表示名称必须包含cache。
现在下一部分很重要。
-ok
表示执行后面的命令,但像我一样,如果我想先执行它。这可以替换为,-exec
但我不建议这样做。这会在不通知您的情况下删除内容,您不希望这样。
好的,下一行(运行的内容-ok
)是rm -rf {} \;
我rm -rf
希望 是不言自明的。{}
基本上是它找到的文件名称的占位符。\;
末尾的 只是表示它是该行的结尾。
我希望这是有道理的。
我建议运行 find 命令时不要添加 和-ok
。它会先列出所有缓存文件,然后您可以查看它们。然后添加部分-ok
并开始操作!
答案4
只需将 basedir 替换为您要删除的基本目录的路径即可
$ find basedir -type f -delete
如果您觉得先移动到基本目录更舒服,那么:
$ cd basedir
$ find . -type f -delete