入れ子になった for ループ

入れ子になった for ループ

以下のようにネストされたzipファイルを一覧表示しようとしています。 2 番目のレベルのファイルはリストされません。

たとえば、

abc.zip含むtest1.zip, test2.zip,test3.zip

pqr.zip含むtest4.zip, test5.zip,test6.zip

for f in *.zip
do
  unzip -l ${f}
  for p in ${f}
  do 
    unzip -l ${p}
  done
done

ベストアンサー1

bsdtarlibarchive と GNU を組み合わせると、tarこれらのネストされたアーカイブの内容をディスクに抽出せずに一覧表示できます。

for f in *.zip; do
  bsdtar -cf - --include='*.zip' "@$f" | tar -xf - --to-command='bsdtar tvf -'
done

GNUはtar抽出時にアーカイブメンバーをコマンドにパイプできますが、アーカイブ形式--to-commandのみをサポートします。tar

bsdtarさまざまなアーカイブ形式がサポートされていますtar(含まれていますzip)。 GNUと同等のものはありませんがtar--to-command私が知っている限り)、アーカイブ形式はすぐに変換できます。

おすすめ記事