使用bash批量解压zip文件并为每个zip文件创建目录
最近在看这本书:
把它的源代码clone下来:
$ git clone https://github.com/Apress/website-scraping-w-python.git
看到里面有多个zip
文件:
$ ls
9781484239247.jpg Chapter 2.zip Chapter 4.zip Chapter 6.zip LICENSE.txt
Chapter 1.zip Chapter 3.zip Chapter 5.zip Contributing.md README.md
可以使用bash
提供的for
循环一个一个显示zip
文件:
$ for f in *.zip; do echo $f; done
Chapter 1.zip
Chapter 2.zip
Chapter 3.zip
Chapter 4.zip
Chapter 5.zip
Chapter 6.zip
使用bash string
的操作符(Manipulating Strings),去掉.zip
扩展名:
$ echo ${f%*.zip}
Chapter 1
使用unzip
命令的-d
选项可以在解压文件的时候,创建目录:
+ unzip -d foo 'Chapter 2.zip'
Archive: Chapter 2.zip
inflating: foo/navigator.py
注意上面,带空格的文件名要用括号括起来。其中,单引号直接括起来字符串,双引号可以引用变量,下面是单引号和双引号的区别:
$ foo="hello"
$ echo "$foo"
hello
$ echo '$foo'
$foo
可以看到,双引号里面的变量会被展开,而单引号里面的不会。综合上面讲的,组合起来,完整的命令如下:
$ for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done
执行过程如下:
可以看到所有的zip
文件都被解压到各自的目录去了。结果如下:
熟练使用好bash
脚本编程,可以把很多工作自动化。