何度も、私が持っていると言うと、解凍されa.zip
ますa/*
。
しかし、通常、すべてのコンテンツを現在のディレクトリに漏らすいくつかのzipファイルがあります。これを行うには、手動でディレクターを作成してa
抽出する必要があります。
しかし、戦略に応じて常にディレクトリを作成し、zip結果が最初の場合、私の構造は理想的にはa/a/*
見えません。
上記の2つのタイプに関係なく、開梱a.zip
する方法はありますかa/*
?
ベストアンサー1
この試み:
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)
アイデアは簡単です。アーカイブのルートレベルに複数のファイルがある場合は、解凍すると明らかに現在のディレクトリが破壊されるため、事前に親ディレクトリを作成し、その中にファイルを解凍する必要があります。それ以外の場合、アーカイブ内のすべてのファイルが同じ親ファイルを持つ場合は、現在のディレクトリに解凍できます。