Files
如何提前知道 .zip 內部是否有父目錄
有幾次,說 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)
想法很簡單 - 如果存檔的根級別上有多個文件,如果您解壓縮它顯然會破壞您的目前目錄,因此您必須事先創建一個父目錄並在其中解壓縮文件。否則,如果存檔中的所有文件都具有相同的父級,則可以在目前目錄中解壓縮。