本文是我在 PRSDigg(顶呱呱)
发布的第 4 篇教程 © 2022 阿坦
转载请注明出处
原创不易,请多转发点赞
怎么搞?
直接给答案:
只需要写一个简单的 shell 脚本,就能搞定批量解压缩文件。
接下来,我先向各位表演一遍,有一定基础的小伙伴可以一起动起手来,基础稍差的小伙伴可以先当作“胸口碎大石”看。表演完之后,是脚本的工作原理的详细解析。
表演一遍
首先,把所有需要批量解压的文件放到一个目录下(我放到了 `~/Desktop` 目录下):
可以看到,我的 Desktop
目录下有 go
开头、Typora
开头的两个打包好的 GNU zip 文件,接下来要批量解压缩的就是他们俩。
接下来,开始写脚本:
使用 vim 开始写一个名为 batchUnzip.sh 的脚本
$ vim batchUnzip.sh
脚本文件名可以随意,按照你的想法命名,后缀名 .sh
是为了提醒用户它是一个 shell 脚本,对于机器来说不是必须,有没有后缀名都可以写 shell 脚本;编辑器也可以用 gedit 或者别的代替 vim。
写好脚本后,敲击冒号 :
输入 wq
保存退出。
执行脚本
$ ./batchUnzip.sh
等待程序执行完毕,输入 ls
命令
可以看到,~/Desktop
目录下多了两个目录,一个 bin
(由 Typora-linux-x64.tar.gz 解压后得到)、一个 go
(由 go1.17.3.linux-amd64.tar.gz 解压后得到)。进入 bin
目录,里面有一个 Typora-linux-x64
目录;进入 go
目录,里面是它的各种配套文件。
到此,~/Desktop
目录下的 *.tar.gz
压缩文件批量解压工作就完成了。
脚本解析
下面一起来看看脚本里具体写的那些东西,从第一行开始:
#!/bin/bash
在 shell 脚本中,#
之后的内容通常是单行注释,但是这个 #!/bin/bash
比较特殊,它表示这是一个 bash
脚本,遵循 bash
语法。
# Author: Atank
// 注释
cd ~/Desktop
// 进入当前用户家目录下的 Desktop
目录
ls *.tar.gz > ls.log
// 把 ~/Desktop
目录下的所有以 .tar.gz
结尾的文件名写入到 ls.log
文件里面。
我们可以到终端单独执行一下这个命令看看:
可以看到,两个文件被分两行写到了 ls.log
文件里面。
for i in $(cat ls.log)
do
tar -zxf $i &> /dev/null
done
通过 for
循环,挨个解压 ls.log
文件中记录的以 .tar.gz
结尾的文件。和我一样刚学习不久的朋友要注意:
在写 shell 脚本时,
cat ls.log
需要用$()
括起来才能被识别;调用变量时需要在前面加
$
符号,所以调用变量i
时写的是$i
;脚本中命令执行后往往会返回一些数字或是错误信息,表示成没成功,遇到了什么情况。
&> /dev/null
的意思是把这些返回的信息直接丢掉。
rm -rf ls.log
// 删除前面创建的 ls.log
文件。
批量解压缩,你学会了吗?欢迎在文章下方留言或通过 Mixin Messenger 和我交流。