Zip

僅解壓縮 zip 文件的特定層/級別的 indo,使用 unzip

  • January 28, 2018

我使用這個命令來提取一個包含我的文件根備份的 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 文件的特定層/級別解壓縮 indoes unzip

例如,我的 zip 包括:

  • 第一層:/var
  • 第二層:/var/www
  • 第三層:/var/www/html/

我只想提取第四層的索引節點(第三層,當然是從零開始的索引)。

最終狀態應該是:

/var/www/html/DATA

您可以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

引用自:https://unix.stackexchange.com/questions/420158