Files

如何提前知道 .zip 內部是否有父目錄

  • November 28, 2017

有幾次,說 I have a.zip,它會自行解壓縮a/*

但是,通常有 zip 文件會將其所有內容溢出到目前目錄中。這需要我手動創建導演a並解壓縮到其中。

但是,如果作為一項策略我總是創建一個目錄,並且 zip 原來是第一種,那麼我的結構看起來a/a/*並不理想。

在我上面描述的兩種類型中,有沒有一種方法可以解壓縮a.zip到它的類型?a/*

試試這個:

archive="archive.zip"
has_parent=$(unzip -l "$archive" | tail -n+4 | head -n-2 | awk '{split($NF,a,"/");print a[1]}' | sort -u | wc -l)
if test "$has_parent" -eq 1; then
 unzip $archive
else
 dir="./$(basename ${archive%%.zip})"
 mkdir "$dir"
 unzip -d "$dir" $archive
fi

如果使用zipinfo你可以擠$has_parent線到這個:

has_parent=$(zipinfo -1 "$archive" | awk '{split($NF,a,"/");print a[1]}' | sort -u | wc -l)

想法很簡單 - 如果存檔的根級別上有多個文件,如果您解壓縮它顯然會破壞您的目前目錄,因此您必須事先創建一個父目錄並在其中解壓縮文件。否則,如果存檔中的所有文件都具有相同的父級,則可以在目前目錄中解壓縮。

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