如何根据bash中的压缩类型解压缩文件? [关闭]

问题描述 投票:0回答:1

我想使用bash解压缩扩展名为.zip,.gz,.bz2,.cmpr的文件。但我需要在

上进行处理
file xxx.zip

命令。然后我必须检查结果-如果是.zip文件然后解压缩,如果是.gz然后是gunzip等。有什么主意吗?

bash unzip gunzip
1个回答
0
投票

要么解析文件名,要么使用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将自动解压缩bzip2gzip。 Gunzip是对某些内容的压缩,也可能是对tar存档的压缩。您想处理这种情况(但这是您自己的[貌似]家庭作业的一部分):-)

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.