大きなZipファイル(> 50GB)があり、コマンドラインからいくつかのファイルを抽出したいとします。
ファイルを取得するには、次のコマンドを実行します。
unzip -l myfile.Zip | grep "foo"
zipエントリのリストが表示されます。 grepフィルターを通過するファイルを抽出するにはどうすればよいですか? xargs unzip -j
を使用してみましたが、Zipエントリでは不要な情報を消去する必要があるため、よりクリーンなソリューションが必要です。
ステファンは正しい考えを持っています 抽出したいファイル名に対応するワイルドカードをZip
に渡します。 unzip
の出力を解析するということは、ヘッダーとトレーラーの行に注意する必要があることを意味します。
次のようなものを使用します:
unzip -j myfile.Zip '*foo*'
注意してください シェルからワイルドカードを引用してください 。
unzip
の出力をgrepする方向に沿って続行する場合は、ヘッダーとトレーラーを取り除き、ファイル名の列に減らします。
unzip -l myfile.Zip | sed '1,3d; /--------- -------/d; $d'|cut -c31-