今天在整理文件的时候遇到了一个头疼的问题。文件夹里面有几十个子文件夹,一个个压缩太麻烦,于是上网搜了一下解决方法,命令直接在下面:(注意:压缩后的文件夹名称中不要有空格!)
$ cd ~/tmp
$ for file in $(ls); do zip -r -q $file.zip $file; done
其中~/tmp为压缩文件夹的路径,zip为压缩方式mac压缩软件一个虫子,-r和-q为命令参数,含义如下:
参数含义
-q
不显示压缩进度状态
-r
子目录和子目录中的所有文件都被压缩;
注意,如果不添加,只会压缩文件夹,不会压缩里面的文件。
-e
加密压缩文件,终端提示输入密码;
还有另一种加密方式,直接在命令行中完成,如:
zip -r -P pwd file.zip文件,直接使用pwd加密file.zip
-m
压缩完成后删除原始文件
-o
设置压缩文件的最后修改时间为当前压缩时间
此外,还有跨目录压缩命令:(注意:压缩文件夹名不能有空格!)
$ cd ~/tmp
$ for file in $(ls); do zip -r -q ~/other/$file.zip $file; done
其中~/other/为要压缩的路径,其他部分同路径压缩方式。
这里之所以没有采用以下方法的原因:(注意:压缩文件夹名中不能有空格!)
$ for file in $(ls); do zip -r -q ~/other/$file.zip ~/tmp/$file; done
原因是它没有跳转到压缩文件夹的路径,而是直接进入,会和压缩文件夹之前的路径一起被压缩mac压缩软件一个虫子,导致压缩文件内部结构复杂。
发表评论