V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
v2htm
V2EX  ›  程序员

linux 下怎么样用 zip 批量压缩多个 [子目录下] 的文件,并且不包含该子目录?

  •  
  •   v2htm · 2015-11-27 00:10:55 +08:00 · 7144 次点击
    这是一个创建于 3294 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设有 A 、 B 、 C 等目录,分别包含 1 、 2 、 3 、 a 、 b 、 c 等文件或目录,现在需要分别把 1\2\3\a\b\c 这些文件用 zip 压缩,文件名为“相应的目录.zip ”,但不能包含 A 、 B 、 C 等目录本身,还不能改变目录结构。

    感觉很容易的问题,一直搞不定,要么所有文件都被单独压缩了,要么 A 、 B 、 C 等文件夹直接被压缩了

    10 条回复    2015-11-27 15:47:32 +08:00
    yuelang85
        1
    yuelang85  
       2015-11-27 00:25:34 +08:00   ❤️ 1
    for i in `find ./* -type d`;do zip $i.zip ./$i/*;done
    v2htm
        2
    v2htm  
    OP
       2015-11-27 00:31:58 +08:00
    @yuelang85 仰视。。。。你低头闻闻自己的肩膀,看有没有牛逼的味道
    我弄了几个小时都没搞定。当然,我是三脚猫
    yuelang85
        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
    v2htm
        4
    v2htm  
    OP
       2015-11-27 00:43:58 +08:00
    @yuelang85 奇怪 我试了一下,还是包含了目录,是要在当前目录运行对吧?
    v2htm
        5
    v2htm  
    OP
       2015-11-27 00:48:27 +08:00
    @yuelang85 哦,简单的测试环境可能看不出来,实际 ABC 每个目录下都有至少三层,每层可能都有文件和目录,我想实现的是相当于在目录 A 下全选所有文件、目录,右键压缩为 zip
    yuelang85
        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 解压)
    v2htm
        7
    v2htm  
    OP
       2015-11-27 01:09:29 +08:00
    @yuelang85 恩,可以了,非常感谢!
    yuelang85
        8
    yuelang85  
       2015-11-27 01:16:47 +08:00
    @v2htm 不客气
    msg7086
        9
    msg7086  
       2015-11-27 05:55:30 +08:00
    到目录里面压缩就行了。无非就是 for 循环里 pushd 一下,压缩完再 popd 就好。
    linhua
        10
    linhua  
       2015-11-27 15:47:32 +08:00
    如果要求通用性的话,也可以用 python 快速实现。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4252 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:11 · PVG 12:11 · LAX 20:11 · JFK 23:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.