近期文章:
项目组有个需求,要求记录每个 rar包内文件的后缀,输入结果要求记录 id、rar包和保内文件的后缀,于是就安装 unrar ,写个简单脚本处理一下
1、安装 rar:
a. 使用 wget下载
下载地址:
wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gz
b. 解压下载的文件:
tar zxvf rarlinux-x64-6.0.2.tar.gz
c. 进入解压后的目录并安装:
cd rar make install
如图中所示,这将安装 rar
和 unrar 到 /usr/local/bin
目录下
2、自动化脚本处理 rar 包
unrar l vip_27887303_5dcdeddf85d04d4fa38c.rar
然后根据包内的时间过滤出需要的文件
unrar l vip_27887303_5dcdeddf85d04d4fa38c.rar|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'
使用 awk -F指定分隔符.
unrar l vip_27887303_5dcdeddf85d04d4fa38c.rar|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'|awk -F. '{print $NF}'
最终脚本如下
#!/bin/bash #set -x while read fileid file do #下载文件 wget -nc download.com$file filename=`basename $file` #获取文件后缀 #file_ext=`unrar l $filename|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'|awk -F. '{print $NF}'` file_ext=`unrar l $filename|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'|awk -F. '{print $NF}'|grep -v "/"` #将结果写入文件 echo $id $file $file_ext >>rar.csv #删除本地文件,防止跑满磁盘 rm -f $filename done<rar.txt
运行结果如下,rar包后面的都是文件后缀
丢给项目组之后过了一天,又要重新跑,跑出压缩包里最大的那个文件后缀,好吧,脚本稍微改下,再跑一次了
#!/bin/bash #set -x while read fileid file do #下载文件 wget -nc download.com$file filename=`basename $file` #获取文件后缀 #file_ext=`unrar l $filename|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'|awk -F. '{print $NF}'` #file_ext=`unrar l $filename|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'|awk -F. '{print $NF}'|grep -v "/"` file_ext=`unrar l $filename|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $2,$NF}'|sort -rn|head -1|awk -F. '{print $NF}'` #将结果写入文件 echo $id $file $file_ext >>rar.csv #删除本地文件,防止跑满磁盘 rm -f $filename done<rar.txt
awk '{print $2, $NF}'
打印出每个文件大小(第 42列)和文件名(最后一列)
sort -nr
按数字降序排序文件大小
head -1
获取最大的文件
好了,结果也是项目组想要的,先这样了