bashコマンドラインで、使用するunzip -l test.zip
と次のような出力が得られます。
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
810000 05-07-2014 15:09 file1.txt
810000 05-07-2014 15:09 file2.txt
810000 05-07-2014 15:09 file3.txt
--------- -------
2430000 3 files
しかし、ファイルの詳細を含む行にのみ興味があります。
私はこのようなgrepを使用してフィルタリングを試みました:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
しかし、それは長く、エラーを起こしやすいです(たとえば、このリストのファイル名Archiveは削除されます)
unzip -lを使用した他のオプション(unzipのmanページを確認しましたが、見つかりませんでした)または他のオプションがありますか?
アーカイブを実際に解凍するのではなく、内部にあるファイルを確認することが重要です。
はい、私は完全に同意します、それがまさにその特定の質問をする理由です:より良い実行可能なソリューションを持っていること。
—
рüффп
grep
要素を持つものはすべて、通常は精度が大幅に向上したAwkスクリプトにリファクタリングできることに注意してください。awk 'NR >3 { if (/^ *---/) exit 0; print }'
最初の3行とフッターをトリミングし、ファイル名だけを簡単に抽出することもできます(ヒント:)print substr($0, 29)
。