大きな圧縮ファイル(具体的には第2レベルのディレクトリのみ)のツリーを見たいので、次のコマンドを使用しました:tar -tf tarfile | tree -L 2
ただし、圧縮ファイルではなく、現在のディレクトリのツリーを出力します。他のコマンドは正常に機能します。たとえば、次の場合です。tar -tf tarfile | less
tarfileを正しく探索できます。
何か間違ったことをしているのですか、それとも他のコマンドのようにtree
をピッピングで使用できないのですか?そうでない場合、圧縮ファイルの第2レベルのディレクトリまでファイルを表示する他の方法はありますか?
tree
はstdinを読み取らず、代わりに実際のディレクトリ構造(現在のディレクトリまたは指定されたディレクトリ)をトラバースするため、tarファイルの目次を後処理する必要があります。 tarファイルがフル/絶対パス名で作成されている場合は、範囲を調整して、目的のディレクトリの深さを見つける必要があります。
1つのオプションはawk
です。
tar -tf tarfile | awk -F/ 'NF == 3'
もう1つはcut
(レベル2を超える子ディレクトリによって親が再度報告されないように一意にソートする)です。
tar -tf tarfile | cut -d/ -f1-3 | sort -u