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

请求编写可批量备份并修改多路径配置文件的Shell脚本

批量配置文件备份与修改脚本实现

以下是一个简洁实用的Shell脚本,可实现批量配置文件的备份与内容替换:

#!/bin/bash

# 定义要处理的目标文件列表,每行一个路径,按需添加/删除
FILES=(
    "/etc/nginx/nginx.conf"
    # "/path/to/another/config.conf"
    # "/other/dir/settings.ini"
)

# 配置替换规则:旧字符串和新字符串
OLD_STR="/etc/nginx/nginx-cloudflare.conf"
NEW_STR="/etc/nginx/nginx-cloudflare-2022.conf"

# 循环处理每个文件
for FILE in "${FILES[@]}"; do
    # 检查文件是否存在
    if [ -f "$FILE" ]; then
        # 创建带.bck后缀的备份文件,-v参数显示备份过程
        BACKUP_FILE="${FILE}.bck"
        cp -v "$FILE" "$BACKUP_FILE"
        
        # 使用sed全局替换内容,兼容Linux和macOS环境
        if [[ "$OSTYPE" == "darwin"* ]]; then
            # macOS系统的sed需要额外空参数
            sed -i '' "s|${OLD_STR}|${NEW_STR}|g" "$FILE"
        else
            # Linux系统直接使用-i参数
            sed -i "s|${OLD_STR}|${NEW_STR}|g" "$FILE"
        fi
        
        echo "处理完成:$FILE"
    else
        echo "警告:文件不存在,跳过:$FILE"
    fi
done

echo "所有文件处理完毕!"

使用说明

  1. 将脚本保存为modify_configs.sh
  2. 赋予执行权限:chmod +x modify_configs.sh
  3. 根据实际需求修改FILES数组、OLD_STR和NEW_STR
  4. 运行脚本:./modify_configs.sh

关键细节说明

  • 用数组管理目标文件,便于批量维护路径
  • 替换时使用|作为分隔符,避免因字符串含/导致的转义麻烦
  • 兼容Linux和macOS的sed语法差异
  • 先备份再修改,避免误操作导致数据丢失

注意事项

  • 建议先在测试环境验证替换逻辑,确保结果符合预期
  • 若替换字符串包含特殊字符(如*、|),需用\进行转义
  • 敏感配置文件可提前手动备份,双重保障

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:05:18