linux shell批量解压脚本

大神们,小弟求助怎么写一个脚本。现在我有200多个名字是按时间命令的7za的压缩包,怎么才能批量解压呢,我担心机器的性能,最好是可以每次选择其中五个一起解压。跪求大神帮助!

全部解压?7za 格式必须有他专用的解压程序 7z。文件名不要包含空格。
for i in *.7za
do
mkdir -p "x/$i"
7z x "$i" -o"x/$i"

done

7z解压自动使用多cpu核心。4个解压文件一个一个解压比4个同时解压效率高。追问

明白了,现在因为没有硬盘空间,可以解压完直接删除源文件吗?怎么删除啊

追答

在循环后面加上 rm -f $i 这条删除文件的语句。
但是rm $i 得在 解压命令正确执行后才能执行因此得使用 && 运算符
for i in *.7za
do
mkdir -p "x/$i"
7z x "$i" -o"x/$i" && rm -f $i
done
5个文件同时解压涉及到5个7z程序同时运行。内存和cpu上会存在大量的进程调度的性能损耗,5个程序同时读取和写入硬盘,会存在巨大的硬盘性能下降。导致整体性能比5个文件一个一个解压要慢的很多。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-28
for file in *.7za;do 7z x $file;done
这也是一个个的解压,不存在性能的问题。追问

我想加快解压的速度,最好可以选择同时5个一起解压。大神跪求!

本回答被网友采纳
相似回答