15

嗨,我必须解压缩一个可能有目录的文件,并且我想排除该目录中的所有内容,我尝试了很多选项并查看了这里,但似乎没有找到任何好的解决方案。

这些是 zip 文件的内容: 请注意 EXCLUDE 文件夹的深度未知,但我们必须排除所有内容

    $unzip -l patch2.zip
Archive:  patch2.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2013-10-29 17:42   EXCLUDE/
        0  2013-10-29 17:24   EXCLUDE/inner/
        0  2013-10-29 17:24   EXCLUDE/inner/inner1.txt
        0  2013-10-29 15:45   EXCLUDE/file.txt
        0  2013-10-29 15:44   patch.jar
        0  2013-10-29 15:44   system.properties
---------                     -------
        0                     6 files

我试过这个命令,它只提取其中的文件,而不是文件夹及其内容:

$unzip -l patch2.zip -x EXCLUDE/*
Archive:  patch2.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2013-10-29 17:42   EXCLUDE/
        0  2013-10-29 17:24   EXCLUDE/inner/
        0  2013-10-29 17:24   EXCLUDE/inner/inner1.txt
        0  2013-10-29 15:44   patch.jar
        0  2013-10-29 15:44   system.properties
---------                     -------
        0                     5 files

谢谢您的帮助。

4

2 回答 2

24

您需要引用排除模式,以便将其传递给unzip. 否则在传递给unzip.

尝试:

unzip patch2.zip -x "EXCLUDE/*"
于 2013-10-29T18:01:45.737 回答
1

@dogbane 答案是正确的。

但是我仍然添加另一个 [我希望] 有趣的选项,就像您在 linux 上一样:

mc  

(又名:午夜指挥官)

启动它,然后:在右侧面板上,导航到您希望文件结束的位置,然后在左侧面板上,导航到 ZIP 文件的“内部”,然后在第一级选择 + 复制您需要的东西(即,全选,并取消选择 EXCLUDE 文件夹,例如)

mc非常灵活且易于使用,特别是对于 tar/untar/zip/move/delete/rename 文件...(在 Windows 上,等效的是 TotalCommander,我经常使用它的“同步”选项来保存备份和来源同步)。它使您可以像解压缩一样导航存档(尝试将实际解压缩最小化为“导航”部分,这样您就不会解压缩两次)。

于 2013-10-29T18:19:19.703 回答