Shell批量压缩当前多个文件夹

for file in $(ls); do zip -r -q $file.zip $file; done

zip压缩的参数说明:

参数 含义
-q 不显示压缩进度状态
-r 子目录及子目录下文件全部压缩;注意,不加的话只有file这个文件夹被压缩,而里面的文件不会被压缩进去
-e 对压缩文件进行加密,终端会提示输入密码;还有另一种加密方法,是直接在命令行里做的,比如:zip -r -P pwd file.zip file, 直接用pwd来加密file.zip
-m 压缩完成时删除原文件
-o 设置被压缩文件的最后修改时间为当前压缩时间

这个方法的缺陷是文件夹名称不能含有空格!!

为了解决上述问题, 需要修改IFS变量,优化后脚本如下:

# 修改IFS变量值
old_IFS=$IFS
IFS=$(echo -en "\n\b")
# 添加-m参数自动清理
for file in $(ls); do zip -r -q -m $file.zip $file; done
#用完恢复老的IFS
IFS=$old_IFS

人已赞赏
Linux

腾讯云监控组件卸载

2021-4-17 16:42:45

常用脚本

端口转发脚本合集

2020-10-21 14:27:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索