加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_沈阳站长网 (https://www.024zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 目录下压缩部分 文件

发布时间:2022-12-13 11:22:13 所属栏目:Linux 来源:
导读:  背景

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

  正则过滤存在的问题

  首先,直接进入该目
  背景
 
  Linux 下某个目录下有小文件好几万,命名规则按日期每小时 N 个,想要过滤出指定日期的文件并添加到压缩文件中,记录下脚本化的过程如下。
 
  正则过滤存在的问题
 
  首先,直接进入该目录,由于文件数过多,ls 打印半天出不了结果。
 
  其次,ls | grep命令筛选直接报错:
 
  解决办法
 
  网络搜索到 xargs 命令可以批量输出,调整思路如下:
 
  1、批量输出目标目录下的文件名称到某个文件。
 
  2、逐行读取该文件内容,并匹配指定正则。
 
  3、将匹配正则的文件名称输出到中间文件。
 
  4、cat 该文件内容作为 tar 命令的参数linux压缩,从而导出符合条件的文件到压缩文件
 
  具体 shell 脚本为:
 
  echo 'start.'
  FILENAME=/home/201902.log
  count=0
  #remove last file
  rm -f /home/test02.log
  rm -f /home/201902.log
  cd /opt/logdata/
  ls | xargs -n 9 > /home/201902.log
  # while read file line
  while read clname2
  do
   if [[ "$clname2" =~ data_._201902* ]]; then
    echo $clname2 >> /home/test02.log
    count=$(($count+1))
   fi
  done<$FILENAME
  echo $count
  #zip
  rm -f 201902.tar.gz
  cat /home/test02.log | xargs tar -czvf 201902.tar.gz
  echo 'finish'
  执行上述脚本可完成 2 月份日志数据的导出。
 
  启示录
 
  简单脚本,涉及到几个知识点:
 
  统计符合条件的文件总数,shell 对变量自增的语法。xargs 的应用。shell 循环读取文件的语法。正则判断语法
 

(编辑:我爱制作网_沈阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!