一、背景介绍
最近领导给了一批文件,都是压缩文件,且解压出来还有可能包含压缩文件,手工解压实在是难以忍受,后来写了一个脚本来自动解压缩,但是脚本只是简单的遍历当前目录下所有的压缩文件并解压,并不能递归的解压缩,所以还需要手动切换目录,寻找压缩文件,然而,解压后新的目录还有可能出现压缩文件。以下是之前的解压缩脚本:
[root@master 国内字典]# cat un.sh #! /bin/sh for file in ./*.rar do if [ -f "${file}" ];then rar x "${file}" fi if [ $? == 0 ];then rm -f "${file}" fi done for file in ./*.7z do if [ -f "${file}" ];then 7za x "${file}" fi if [ $? == 0 ];then rm -f "${file}" fi done for file in ./*.zip do if [ -f "${file}" ];then unzip "${file}" fi if [ $? == 0 ];then rm -f "${file}" fi done for file in ./*.gz do if [ -f "${file}" ];then gunzip "${file}" fi if [ $? == 0 ];then rm -f "${file}" fi done
后来学习了递归遍历目录的shell脚本,所以这件事情也可以由递归遍历目录的方式来做。这里就不多说了,本文介绍另一种方法。
二、利用find命令寻找并解压压缩文件
- 其实我们可以简单的利用find名令来找出现在所有的压缩文件,然后使用解压软件解压,解压后再使用find寻找压缩文件来解压,如此循环执行,知道找不到压缩文件为止。