shell 如何压缩文件(与模式)从另一个zip压缩文件,而不解压在Linux

5hcedyr0  于 2023-05-01  发布在  Shell
关注(0)|答案(1)|浏览(405)

有没有办法“复制”所有的"**/bin/*.o"org.zip文件到new.zip没有提取组织.拉链。
org.zip:

$ unzip -l org.zip
Archive:  org.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  04-24-2023 20:13   org/
        8  04-24-2023 20:06   org/c.c
        0  04-24-2023 20:00   org/bin/
       12  04-24-2023 20:02   org/bin/a.o         <- wanted
       12  04-24-2023 20:05   org/bin/b.o         <- wanted
       12  04-24-2023 20:03   org/bin/c.o.        <- wanted
        8  04-24-2023 20:06   org/a.c
        8  04-24-2023 20:06   org/b.c
        0  04-24-2023 19:59   org/debug/
       14  04-24-2023 20:03   org/debug/a.o
       14  04-24-2023 20:03   org/debug/b.o
       14  04-24-2023 20:03   org/debug/c.o
---------                     -------
      102                     12 files

# wanted files
$ unzip -Z1 org.zip  "**/bin/*.o"
org/bin/a.o
org/bin/b.o
org/bin/c.o

我将所有想要的文件解压到一个“tmp”文件中,然后再次压缩,最后删除tmp文件夹(如下所示):

$ unzip -q -o org.zip '**/bin/*.o' -d ./tmp
$ ( cd ./tmp && zip -q -r - . ) > new.zip
$ rm -rf ./tmp

$ unzip -l new.zip
Archive:  new.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  04-24-2023 20:20   org/
        0  04-24-2023 20:20   org/bin/
       12  04-24-2023 20:02   org/bin/a.o
       12  04-24-2023 20:05   org/bin/b.o
       12  04-24-2023 20:03   org/bin/c.o
---------                     -------
       36                     5 files

既然unzipzip都支持流,那么有什么优雅方法来处理它吗?类似于:

$ unzip -Z1 org.zip "**/bin/*.o" | xargs unzip -p -o org.zip | < ... how to zip ... >
wlzqhblo

wlzqhblo1#

使用zip--copy/-U标志,如下所示:

zip org.zip '**/bin/*.o' -U -O new.zip

相关问题