Linux下安装使用 unrar 处理 rar 文件和自动化脚本实践

近期文章:

项目组有个需求,要求记录每个 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 获取最大的文件

好了,结果也是项目组想要的,先这样了