码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本--在带本月日期的文件中搜索包含某个关键字,并返回含有关键字的文件

时间:2019-04-22 12:08:37      阅读:420      评论:0      收藏:0      [点我收藏+]

标签:echo   当前日期   find   .sh   txt   打印   脚本   ack   嵌套   

因为工作中每天都需要根据某个关键字,在包含每天日期的一批文件中搜索某个关键字,找出这批文件中包含关键字的文件,并返回文件名。
本程序涉及:find命令,date命令,if循环,$符号的意义(本程序涉及在bash脚本和命令行中意义)

脚本名为h.sh,
脚本运行:
例如:我们想搜索jack在不在本月的黑名单中,就这样执行脚本:sh h.sh jack,

# cat h.sh

1 #!/bin/sh
2 sdate=`date +%Y%m`
3 dir=`find ./  -name "BLACKLIST_${sdate}*"`
4 for i in $dir
5 do

6       if grep $1 $i ;
7             then echo $i
8       else

9           echo $i  ‘>>>>  no found‘
10      fi
11done

第2行:
显示当前日期所在年月,比如现在日期20190422,该句得到的是201904

第3行:

用find语句查找当前目录(如果不放在文件所在的目录要将程序中第3行的./更改为你目标文件所在目录),所有文件名以BLACKLIST_201904开头的文件,比如现在是201904,
则完整find语句是:find ./ -name "BLACKLIST_201904*"  ,${sdate}就是201904,即一个变量值的替换
并将这些文件名放在dir变量中

5~11行:
最外层是一个循环,循环中嵌套一个if判断语句。

第6行:
if语句是逐个判断dir中保存的文件中是否有我们作为第一个参数送进来的。$1就是jack,当然也可以传入多个值$2,$3……,这里就要更改if语句了。
$i就是目前正在搜索的文件。比如当前日期是20190422,我们的文件是.txt后缀结尾的,那么$i就有可能是
BLACKLIST_20190401.txt、BLACKLIST_20190402.txt、……BLACKLIST_20190422.txt这22个文件中的任何一个。
如果jack在,就只显示文件名,如果不在就打印提示:在文件中XXX中没有发现

shell脚本--在带本月日期的文件中搜索包含某个关键字,并返回含有关键字的文件

标签:echo   当前日期   find   .sh   txt   打印   脚本   ack   嵌套   

原文地址:https://blog.51cto.com/12280599/2382483

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!