仅解压缩 zip 文件的特定层/级别,使用 unzip

仅解压缩 zip 文件的特定层/级别,使用 unzip

我使用此命令提取包含文档根备份的 zip 文件:

unzip /var/www/html/html-2018-01-08-02\:52\:11.zip -d /var/www/html/

这会提取文档根目录内的所有数据,但有一个问题,当前状态是重复的文档根目录:

/var/www/html/var/www/html/DATA

当然,我可以使用 移回数据,mv然后使用 删除重复的文档根目录cd /var/www/html && rm -rf /var/www/html,但最简单的解决方案是直接通过表单实现unzip

我希望从一开始就不会发生重复。


如何使用 ? 仅解压缩 zip 文件的特定层/级别unzip

例如,我的 zip 包括:

  • 一线:/var
  • 第二层:/var/www
  • 第三层:/var/www/html/.

我只想提取第四层的索引节点(当然,第三层,在从零开始的索引中)。

最终状态应该是:

/var/www/html/DATA

答案1

您可以unzip通过路径限制要提取的文件:

使用通配符:

unzip foo.zip '*/*/*/*'

使用字面语法:

unzip foo.zip 'var/www/html/*'

例如:

$ zipinfo ../1.zip 
Archive:  ../1.zip
Zip file size: 1134 bytes, number of entries: 8
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/
drwxrwxr-x  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/4/
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/4/d
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/3/c
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/2/b
-rw-rw-r--  3.0 unx        0 bx stor 18-Jan-28 13:53 1/a
8 files, 0 bytes uncompressed, 0 bytes compressed:  0.0%
$  unzip ../1.zip '*/*/*/*'
Archive:  ../1.zip
   creating: 1/2/3/
   creating: 1/2/3/4/
 extracting: 1/2/3/4/d               
 extracting: 1/2/3/c

相关内容