编写shell脚本,对某个文件夹内搜索指定文件并对文件内容进行更改:
在桌面创建shell_test文件夹
进入shell_test文件夹,创建5个测试文件
在shell_test文件夹中再创建一个666文件夹,继续再创建5个文件,如图:
分别在每文件中写入内容:The moon is so round tonight,查看文件内容:
任务:搜索所有名为‘file...’的文件,并将文件内容中所有的‘round’替换为‘big’,
创建脚本,chang.sh
vim change.sh
编写脚本(注意单引号和反引号的区别):
#!/bin/bash
# 获取传入的第一个参数,即文件位置
cur_path="$1"
# 遍历文件夹内所有的文件及文件夹,注意此处不是单引号,是反引号(因为这是一条命令)
for doc in `ls "${cur_path}"`
do
# 如果遍历到的是文件,则进行内容的替换
if [ -f "${cur_path}/${doc}" ]
then
# 匹配文件名,从文件名的第一位开始,匹配4位;利用sed将文件内容进行更改
[ "file" == "${doc:0:4}" ] && sed -i "1s#round#big#" "${cur_path}/${doc}"
# 如果遍历到的是文件夹,则递归调用本函数,传入的参数为当前文件夹,即拼接后的路径
else
bash $0 "${cur_path}/${doc}"
fi
done
运行脚本:
查看文件内容:
至此,完成了搜索指定目录下的文件,并将文件内容替换为“big”。