使用shell脚本一次性解压某一路径下多个压缩文件

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用shell脚本一次性解压某一路径下多个压缩文件相关的知识,希望对你有一定的参考价值。

场景

博主下载下了一个数据集,里面的压缩文件实在是太多了,一个一个地去tar -jxvf实在感觉笨笨的,于是参考了一些网上的写法编写了一个基于for do循环的解压缩脚本。

说明

1. 我的压缩文件全部是.tar.bz2结尾的,如果是其他的可能不是用tar -jxvf来解压缩

2. find 后面的path参数缺省项是当前目录,而且find自带递归属性,不需要额外加-r

3. 有一个小坑,就是给变量赋值,千万不要为了美观在“=”前后加空格

脚本

ok,上代码

#!/bin/bash
 
bz2files=`find -name *.tar.bz2`
 
for file in $bz2files; do
    tar -jxvf $file && rm -f $file
done

之后再sh xx.sh运行这个脚本就可以等待了~

进阶

现在我希望解压的结果类似于图形界面中的"解压到当前文件夹下",如下图所示

 那么可以通过字符串截取的方式将压缩包的名字得到(即.tar.bz2)作为解压后的文件夹名,然后加在参数-C后,代码如下

#!/bin/bash
 
bz2files=`find 路径 -name "*.tar.bz2"`
 
for file in $bz2files; do
    newfile=$file%.tar*
    mkdir $newfile
    tar -jxvf $file -C $newfile
done

以上是关于使用shell脚本一次性解压某一路径下多个压缩文件的主要内容,如果未能解决你的问题,请参考以下文章

打包压缩命令

打包压缩命令

压缩与解压

linux利用shell脚本下载文件并解压

shell 一次按顺序执行多个脚本

shell实现压缩多个文件