近期文章:
项目组有个需求,要求记录每个 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
![image - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2024/01/image.png)
如图中所示,这将安装 rar
和 unrar 到 /usr/local/bin
目录下
2、自动化脚本处理 rar 包
unrar l vip_27887303_5dcdeddf85d04d4fa38c.rar
![8A98218CB758163229DE5851F1C67850 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2024/01/8A98218CB758163229DE5851F1C67850-1024x656.jpg)
然后根据包内的时间过滤出需要的文件
unrar l vip_27887303_5dcdeddf85d04d4fa38c.rar|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'
![3F038E502DB0FD008397FCC65DBBF63E - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2024/01/3F038E502DB0FD008397FCC65DBBF63E.jpg)
使用 awk -F指定分隔符.
unrar l vip_27887303_5dcdeddf85d04d4fa38c.rar|awk '/[0-9]{4}-[0-9]{2}-[0-9]{2}/ {print $NF}'|awk -F. '{print $NF}'
![image-2 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2024/01/image-2.png)
最终脚本如下
#!/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包后面的都是文件后缀
![image-3 - zhpengfei.com](https://zhpengfei.com/wp-content/uploads/2024/01/image-3-1024x136.png)
丢给项目组之后过了一天,又要重新跑,跑出压缩包里最大的那个文件后缀,好吧,脚本稍微改下,再跑一次了
#!/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
获取最大的文件
好了,结果也是项目组想要的,先这样了
![](https://pic1.zhimg.com/80/v2-a67a63952715b334bc1ab79c835b1cac_720w.webp)