结合 Step2 我们最终的脚本命令为:
#!/bin/bash SAVEIFS=$IFS IFS=$(echo -en "\n\b") for file in * do if [ -d $file ] then zip -rq $file.zip $file echo $file was successfully compressed. fi done IFS=$SAVEIFS压缩成功每个文件都会打印一句压缩成功。
使用只需要将脚本命令拷贝到你需要压缩的目录下面,就可以对跟脚本文件同级的所有目录进行压缩。
记得脚本文件需要有可执行权限才能运行。
如果提示没有权限,可以先运行如下命令添加权限。
chmod u+x batch_zip.sh 下载大家可以到 GitHub 仓库上面去直接下载本文最终生成的脚本文件。
https://github.com/nesger/EffectiveTools/blob/master/shell/batch_zip.sh
里面的 README.md 也有具体的用法说明。
优化点这个脚本命令还有很多地方可以优化,有待大家去完善。
这里列举如下;
支持压缩指定目录而不是固定为当前目录,指定目录通过执行脚本时参数带入
压缩结束后告知本次成功压缩的总数目
增加一个逻辑判断,压缩成功后是否删除原文件?可以通过执行脚本时参数带入
这里就不再描述了,相信对于读者来说,要实现这些优化也是很简单的事情。
温馨提示其实如果你是要换机器,而且当前系统没有 bug 的话。
推荐使用时间机器(Time Machine)进行系统迁移。
它相当于把你一台机器上的整个系统(包括文件)进行一个迁移,省去了你重新安装应用程序和搭建环境的时间。
参考链接:
https://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html
https://www.cnblogs.com/cocowool/archive/2013/01/15/2861904.html