web-dev-qa-db-ja.com

`unzip -l`のときにZipアーカイブ内のファイル名のリストを抽出する

私がする時 unzip -l zipfilename、 そうですか

1295627  08-22-11 07:10   A.pdf
473980  08-22-11 07:10   B.pdf
...

ファイル名だけを見たい。これを試してみる

unzip -l zipFilename | cut -f4 -d" "

しかし、区切り文字は" "

34
Thang Pham

ファイルに名前にスペースがないと仮定します。

unzip -l filename.Zip | awk '{print $NF}'

私の解凍出力にはヘッダーとフッターの両方があるため、awkスクリプトは次のようになります。

unzip -l filename.Zip | awk '/-----/ {p = ++p % 2; next} p {print $NF}'

スペースを含むファイル名を処理するバージョン:

unzip -l filename.Zip | awk '
    /----/ {p = ++p % 2; next}
    $NF == "Name" {pos = index($0,"Name")}
    p {print substr($0,pos)}
'
25
glenn jackman

これを行う最も簡単な方法は、次のコマンドを使用することです。

unzip -Z -1 archive.Zip

または

zipinfo -1 archive.Zip

これは、各行に1つずつ、ファイル名のみをリストします。

2つのコマンドはまったく同じです。 -Zオプションは、unzipに残りのオプションをzipinfoオプションとして扱うように指示します。 nzip および zipinfo のマニュアルページを参照してください。

97
amicitas

ファイル名withスペースに対応する必要がある場合は、次を試してください。

unzip -l zipfilename.Zip | awk -v f=4  ' /-----/ {p = ++p % 2; next} p { for (i=f; i<=NF;i++) printf("%s%s", $i,(i==NF) ? "\n" : OFS) }'
6
peteretep

Awkを使用します。

unzip -l zipfilename | awk '{print $4}'
3
Manny D