请求编写可批量备份并修改多路径配置文件的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 "所有文件处理完毕!"
使用说明
- 将脚本保存为
modify_configs.sh - 赋予执行权限:
chmod +x modify_configs.sh - 根据实际需求修改
FILES数组、OLD_STR和NEW_STR - 运行脚本:
./modify_configs.sh
关键细节说明
- 用数组管理目标文件,便于批量维护路径
- 替换时使用
|作为分隔符,避免因字符串含/导致的转义麻烦 - 兼容Linux和macOS的
sed语法差异 - 先备份再修改,避免误操作导致数据丢失
注意事项
- 建议先在测试环境验证替换逻辑,确保结果符合预期
- 若替换字符串包含特殊字符(如
*、|),需用\进行转义 - 敏感配置文件可提前手动备份,双重保障
内容的提问来源于stack exchange,提问作者Adriana Alves
相关产品推荐
相关产品推荐

