Ten.zipで圧縮された10個のファイルがあります。圧縮ファイルの10個のファイル全体で最初のn行(2行など)を読み取る方法は?簡単なコマンドがありますか?
ベストアンサー1
unzip自体はこの機能を提供しないため、「簡単な」コマンドはありません。ファイルの一部または全部を抽出し、それ自体を処理するように要求する必要があります。別のアプローチは次のとおりです。
zipinfo -1 Ten.zip | while IFS= read -r filename
do
unzip -p Ten.zip "$filename" | sed 2q
done
ここでの違いは、zipinfo
アーカイブの内容を1行に1つずつ一覧表示するために使用することです。次に、ファイル名を1行ずつ読み、ファイルを画面に抽出するように求めますunzip
。-p
いいえprint)その後、sed
パイプ(デフォルト)を介して印刷され、ライン2で終了します。
アーカイブするファイル名に改行文字が含まれていると、この操作が失敗する可能性があります。ただし、解凍すると抽出時にファイル名が破損するため、これを行わないでください。
$ touch file$'\n'name
$ zip foo.zip file*name
$ rm file*name
$ zipinfo -1 foo.zip
file^Jname
$ unzip foo.zip
Archive: foo.zip
extracting: filename
$ ls -lrt
...
filename