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

编写shell脚本,对某个文件夹内搜索指定文件并对文件内容进行更改:

在桌面创建shell_test文件夹

14a0fa19bff69fed5371fa7a66eb0ae7.png

进入shell_test文件夹,创建5个测试文件

80aa23c200c8057172079a086c7901e0.png

6091876a78e2e5249ca5df62598d4b21.png

在shell_test文件夹中再创建一个666文件夹,继续再创建5个文件,如图:

68fcb571f962807c2f6fa67748114d48.png

分别在每文件中写入内容:The moon is so round tonight,查看文件内容:

b487c3c925e328cd7de9f14a3fc3a628.png

任务:搜索所有名为‘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

运行脚本:

f597f778ca41d501b1c8e2b813e20d0a.png

查看文件内容:

b9ae2f9b523d5753fd6592217a95b842.png

至此,完成了搜索指定目录下的文件,并将文件内容替换为“big”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值