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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
Linux

腾讯云监控组件卸载

2021-4-17 16:42:45

Linux虚拟化

在CentOS 7中安装KVM平台搭建VPS

2021-7-21 17:03:07

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