![使用 Bash 删除文档根目录下所有 CMS 的所有缓存目录的好方法](https://linux22.com/image/127029/%E4%BD%BF%E7%94%A8%20Bash%20%E5%88%A0%E9%99%A4%E6%96%87%E6%A1%A3%E6%A0%B9%E7%9B%AE%E5%BD%95%E4%B8%8B%E6%89%80%E6%9C%89%20CMS%20%E7%9A%84%E6%89%80%E6%9C%89%E7%BC%93%E5%AD%98%E7%9B%AE%E5%BD%95%E7%9A%84%E5%A5%BD%E6%96%B9%E6%B3%95.png)
假设在文档根目录下我有 3 个应用程序;第一个是 WordPress,第二个是 Drupal,第三个是 Magento。
我想知道有什么好方法可以删除文档根目录下所有CMS的所有缓存目录。
我可以运行一个带有 shell 扩展的脚本(WP-CLI、Drush 和 Magento CLI),但是什么是好的 Bash 全局方式呢?
我想到这个来删除所有缓存文件(${drt}
=文档根目录):
find ${drt}/*/cache/* -type f -exec rm -rf {} \;
答案1
我自己会使用稍微不同的find
命令:
find "${drt}" -path "*/cache/*" -type f -exec rm -f {} \;
...这样就find
完成了目录树递归的工作;您的示例有 bash 命令行扩展了所有的*
,给出了find
多个起始路径。另请注意,您不需要-r
递归删除文件(您明确要求带有 的文件-type f
)。 find 命令的这个通用版本还将“捕获”诸如 之类的目录中的文件${drt}/wordpress/subdir/cache/directory/filename
,其中缓存目录不是文档根目录下的一级。这是否是您想要的取决于缓存目录在您的环境中的确切位置。
如果您有 GNU find(例如 Linux),您可以使用以下命令简化删除过程:
find "${drt}" -path "*/cache/*" -type f -delete