zip名とファイル名の印刷

zip名とファイル名の印刷

zipinfo -1 a.zipzipの内容を表示するコマンドを使用しています。毎回zip名とサイズファイル名を並べて表示する方法。

たとえば、次の2つのzipがあります。

a.zip contains file1, file2, file3, file4
b.zip contains file5, file6, file7, file8

希望の出力:

a.zip file1
a.zip file2
a.zip file3
a.zip file4
b.zip file5
b.zip file6
b.zip file7
b.zip file8

ベストアンサー1

次のようにできます。

for file in *.zip; do
  bsdtar -tf "$file" | F=$file awk '{print ENVIRON["F"], $0}'
done

zipファイル名にワイルドカードが含まれていて、その制御文字のエンコーディングがあいまいな場合(たとえば、行が表示され、それがリテラルか(バックスペースキーの表現)かわからない場合)、ここでas文字のbsdtar代わりに使用できます。zipinfo正常に動作しません))次)。式を使用すると、バックスラッシュ自体がとして表示されます。zipinfo^HOME^HOME^HOMEbsdtar\b\\

GNUでは、代わりにプレフィックスとしてusingを使用grepできます。また、見ることができます。するfilename:grep -H --label="$file" '^'perl -nse 'print "$file $_"' -- -file="$file"いいえsed "s/^/$file /"これはコマンドインジェクションの脆弱性であるため使用されます。

おすすめ記事