【shell】对指定文件夹中文件进行过滤,并修改文件内容的shell脚本

版权声明:尊重原作者,转载请在文章头部注明网址。 https://blog.csdn.net/u013034226/article/details/85635376

编写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”。

猜你喜欢

转载自blog.csdn.net/u013034226/article/details/85635376
今日推荐