grep などを使用して 7z -l の出力を整理します。

grep などを使用して 7z -l の出力を整理します。

Linux システム上の複合ファイルのルート ディレクトリを取得する必要があります。このために、複合ファイル形式を読み取ることができるツールである 7zip (p7zip-full) を使用しようとしました。

これは基本的にはうまく機能しますが、解析可能なテキストはひどいものになります。

http://pastebin.com/VP4ZW8jr

そこでコミュニティへの質問ですが、この出力をうまく解析して次のような出力を得ることは可能でしょうか?

  • IPC_0805_チップ_キャップ
  • ファイルヘッダー
  • 図書館
  • Zフォーム
  • DO-214AA
  • ...

?

この情報は PHP スクリプト内で必要です。そのため、最後に、コマンドは PHP スクリプトから実行されます。複合ファイル構造を PHP で直接読み取る機会があれば、大変助かります。

ありがとう

答え1

出力はいくつかありますが、7z にはフォーマット オプションがあまりないようです。grep だけを試したいとは思いませんが、head、tail、cut の組み合わせでファイル名だけを出力するのは十分機能するはずです。同様の cut は他の情報にも機能するはずですし、teeプロセス置換 ( <()) も役立つかもしれません。または、php で各行を文字ごとに切り取ることもできます (あまり詳しくありません)。

私の 7zr バージョンでは、先頭に 18 行の非ファイル名情報があり、末尾に 2 行あり、各行の先頭には 54 文字の非ファイル名文字があります。異なる場合は調整してください。

$ 7zr l test.7z  |tail -n+18|head -n-2|cut -c54-
file1
file2
file3

関連情報