假设有 A 、 B 、 C 等目录,分别包含 1 、 2 、 3 、 a 、 b 、 c 等文件或目录,现在需要分别把 1\2\3\a\b\c 这些文件用 zip 压缩,文件名为“相应的目录.zip ”,但不能包含 A 、 B 、 C 等目录本身,还不能改变目录结构。
感觉很容易的问题,一直搞不定,要么所有文件都被单独压缩了,要么 A 、 B 、 C 等文件夹直接被压缩了
1
yuelang85 2015-11-27 00:25:34 +08:00 1
for i in `find ./* -type d`;do zip $i.zip ./$i/*;done
|
3
yuelang85 2015-11-27 00:34:57 +08:00 2
抱歉,刚刚那个还是包含目录了,这个可以:
for i in `find ./* -type d`;do zip $i.zip `find $i -type f`;done |
5
v2htm OP @yuelang85 哦,简单的测试环境可能看不出来,实际 ABC 每个目录下都有至少三层,每层可能都有文件和目录,我想实现的是相当于在目录 A 下全选所有文件、目录,右键压缩为 zip
|
6
yuelang85 2015-11-27 00:56:37 +08:00 1
@v2htm 如果是三层:
for i in `find ./* -type d`;do zip $i.zip `find $i | grep -v "$i$"`;done 这个我用 unzip 测试是可以的,但是有些 gui 工具会创建一个新的子目录(比如 mac 自带的 zip 解压) |
9
msg7086 2015-11-27 05:55:30 +08:00
到目录里面压缩就行了。无非就是 for 循环里 pushd 一下,压缩完再 popd 就好。
|
10
linhua 2015-11-27 15:47:32 +08:00
如果要求通用性的话,也可以用 python 快速实现。
|