我想使用bash解压缩扩展名为.zip,.gz,.bz2,.cmpr的文件。但我需要在
上进行处理file xxx.zip
命令。然后我必须检查结果-如果是.zip文件然后解压缩,如果是.gz然后是gunzip等。有什么主意吗?
要么解析文件名,要么使用file
获取类型。创建一个bash文件,该文件包含要命令的数组类型。例如:
#! /bin/bash
declare -A mapping
mapping['POSIX tar archive']='tar -xf'
mapping['gzip compressed data,']='unzip'
mapping['Zip archive data,']='gunzip'
file="$1"
find=`file -b "${file}" | grep -Eo '^(\w+[ ,]){,3}'`
eval "${mapping[$find]} "${file}""
exit $?
注意,tar
将自动解压缩bzip2
和gzip
。 Gunzip是对某些内容的压缩,也可能是对tar存档的压缩。您想处理这种情况(但这是您自己的[貌似]家庭作业的一部分):-)
祝你好运!