假设在文档根目录下我有 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