shell脚本替换/home/daas/目录下所有子目录下的符合.sh和.config和.conf和.properties后缀的文件指定字符串
时间: 2024-01-14 12:04:16 浏览: 102
可以使用以下的脚本来实现:
```shell
#!/bin/bash
SEARCH_DIR="/home/daas"
SEARCH_FILES=("*.sh" "*.config" "*.conf" "*.properties")
SEARCH_STRING="old_string"
REPLACE_STRING="new_string"
for file_type in "${SEARCH_FILES[@]}"
do
for file in $(find "$SEARCH_DIR" -name "$file_type")
do
sed -i "s/$SEARCH_STRING/$REPLACE_STRING/g" "$file"
done
done
```
这个脚本的作用是遍历 `/home/daas` 目录下所有的后缀为 `.sh`、`.config`、`.conf` 和 `.properties` 的文件,并将其中的 `old_string` 替换为 `new_string`。其中,`sed -i "s/$SEARCH_STRING/$REPLACE_STRING/g" "$file"` 是实现替换的命令。
相关问题
递归替换替换/home/daas目录下的.sh和.conf和.config和.properties文件的指定字符串
可以使用递归遍历目录的方式,找到所有符合条件的文件,并对其中的字符串进行替换。下面是一个可能的实现:
```bash
#!/bin/bash
# 要替换的字符串和替换后的字符串
FIND_STR="old_string"
REPLACE_STR="new_string"
# 递归遍历目录并替换指定类型的文件中的字符串
function replace_in_files {
for file in "$1"/*; do
if [[ -d "$file" ]]; then
replace_in_files "$file"
elif [[ -f "$file" ]]; then
if [[ "$file" == *.sh || "$file" == *.conf || "$file" == *.config || "$file" == *.properties ]]; then
sed -i "s/$FIND_STR/$REPLACE_STR/g" "$file"
fi
fi
done
}
# 从指定目录开始遍历
replace_in_files "/home/daas"
```
这个脚本会递归地遍历 `/home/daas` 目录下的所有文件和子目录。对于每个找到的文件,如果它是 `.sh`、`.conf`、`.config` 或 `.properties` 类型的文件,就使用 `sed` 命令进行替换。注意,替换操作是在原文件上进行的,因此要谨慎操作。
sed 替换指定/home/daas文件夹下.sh和.config和.properties后缀的所有的指定字符串
可以使用下面的命令:
```
sed -i 's/old_string/new_string/g' /home/daas/*.{sh,config,properties}
```
其中,`-i` 参数表示直接修改文件内容,`s/old_string/new_string/g` 表示将文件中所有的 `old_string` 替换成 `new_string`,`/home/daas/*.{sh,config,properties}` 表示匹配 `/home/daas` 文件夹下所有以 `.sh`、`.config`、`.properties` 结尾的文件。
阅读全文