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

近期文章:vpn推荐 / 科学上网推荐 / 机场推荐 / 苹果 ios 美区apple ID 共享账号分享

项目组有个需求,要求记录每个 rar包内文件的后缀,输入结果要求记录 id、rar包和保内文件的后缀,于是就安装 unrar ,写个简单脚本处理一下

1、安装 rar

a. 使用 wget下载

下载地址:https://www.rarlab.com/download.htm

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 获取最大的文件

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

Comments

No comments yet. Why don’t you start the discussion?

发表评论