使用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脚本一次性解压某一路径下多个压缩文件的主要内容,如果未能解决你的问题,请参考以下文章