shell grep 变量_Shell应用:巧用xargs 轻松实现上万文件的筛选压缩

背景

Linux 下某个目录下有小文件好几万个,命名规则按日期每小时 N 个,想要过滤出指定日期的文件并添加到压缩文件中,记录下脚本化的过程如下。

正则过滤存在的问题

首先,直接进入该目录,由于文件数过多,ls 打印半天出不了结果。
其次,ls | grep命令筛选直接报错:

7a393d3253dfcaabbeafe69cf2984c48.png

解决办法

网络搜索到 xargs 命令可以批量输出,调整思路如下:
1、批量输出目标目录下的文件名称到某个文件。
2、逐行读取该文件内容,并匹配指定正则。
3、将匹配正则的文件名称输出到中间文件。
4、cat 该文件内容作为 tar 命令的参数,从而导出符合条件的文件到压缩文件
具体 shell 脚本为:

echo 'start.'FILENAME=/home/201902.logcount=0#remove last filerm -f /home/test02.logrm -f /home/201902.logcd /opt/logdata/ls | xargs -n 9 > /home/201902.log# while read file line while read clname2do if [[ "$clname2" =~ data_._201902* ]]; then  echo $clname2 >> /home/test02.log  count=$(($count+1)) fidone

执行上述脚本可完成 2 月份日志数据的导出。

启示录

简单脚本,涉及到几个知识点:

  1. 统计符合条件的文件总数,shell 对变量自增的语法。
  2. xargs 的应用。
  3. shell 循环读取文件的语法。
  4. 正则判断语法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值