You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash删除文档根目录下各CMS的所有缓存目录

通用Bash脚本清理多CMS缓存目录方案

我完全理解你不想依赖WP-CLI、Drush这类专属工具,想要一个纯Bash的通用方案来清理文档根目录下WordPress、Drupal、Magento这三个应用的缓存。下面是一个实用的实现思路和脚本,兼顾兼容性和安全性:

核心思路

通过识别每个CMS的特征文件(比如WordPress的wp-config.php)来判断应用类型,再根据预定义的对应缓存目录进行清理,不需要依赖任何第三方工具。

完整Bash脚本

#!/bin/bash

# 替换为你的实际文档根目录路径
DOC_ROOT="/var/www/html"

# 定义CMS特征文件与缓存目录的映射
# 格式:["CMS名称"]="特征文件列表|缓存目录列表"
declare -A cms_configs=(
    ["WordPress"]="wp-config.php|wp-content/cache wp-content/uploads/cache"
    ["Drupal"]="index.php drupal|sites/default/files/cache sites/default/files/php var/cache"
    ["Magento"]="app/etc/env.php|var/cache var/page_cache var/view_preprocessed pub/static/frontend pub/static/adminhtml"
)

# 遍历文档根目录下的所有应用子目录
for app_dir in "${DOC_ROOT}"/*/; do
    # 处理路径格式,去掉末尾斜杠
    app_dir=$(dirname "${app_dir}")
    app_name=$(basename "${app_dir}")

    echo "=== 检查应用目录:${app_name} ==="

    # 匹配当前目录对应的CMS类型
    for cms in "${!cms_configs[@]}"; do
        # 拆分特征文件和缓存目录配置
        IFS='|' read -r signature_files cache_dirs <<< "${cms_configs[$cms]}"
        is_matched=true

        # 验证所有特征文件是否存在
        for sig_file in ${signature_files}; do
            if [ ! -f "${app_dir}/${sig_file}" ]; then
                is_matched=false
                break
            fi
        done

        if [ "${is_matched}" = true ]; then
            echo "识别为${cms}应用,开始清理缓存..."
            # 逐个清理缓存目录
            for cache_dir in ${cache_dirs}; do
                full_cache_path="${app_dir}/${cache_dir}"
                if [ -d "${full_cache_path}" ]; then
                    # 仅删除目录内的文件,保留目录本身(如需删除目录,去掉/*即可)
                    rm -rf "${full_cache_path}"/*
                    echo "✅ 已清理:${full_cache_path}"
                else
                    echo "ℹ️ 缓存目录不存在,跳过:${full_cache_path}"
                fi
            done
            echo "✅ ${cms}缓存清理完成!"
            echo ""
            # 找到匹配的CMS后跳出循环,避免重复判断
            break
        fi
    done
done

脚本优势说明

  • 无依赖:纯Bash实现,不需要安装任何CMS专属CLI工具,适合各种环境
  • 安全可靠:先检查缓存目录是否存在再执行删除,避免因目录不存在抛出错误
  • 灵活扩展:如果需要添加其他CMS(比如Joomla),只需在cms_configs数组中新增条目即可,格式和现有配置一致
  • 可控性强:默认只删除缓存目录内的文件,保留目录结构;如果需要彻底删除目录,修改rm命令即可

注意事项

  • 权限问题:确保运行脚本的用户(比如www-data或root)对所有缓存目录拥有读写权限
  • 自定义缓存:如果你的CMS使用了非默认缓存路径,需要手动在cms_configs中添加对应的目录
  • 测试先行:正式运行前,可以把rm -rf替换成echo "将清理:",先预览要操作的内容,避免误删重要文件

内容的提问来源于stack exchange,提问作者Arcticooling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:39:17