web-dev-qa-db-ja.com

複数の包含と除外のツリーコマンド

次のように、treeコマンドを使用して結果を除外する例を教えてください。

  • ディレクトリを無視する(たとえば、binunitTest
  • 拡張子を持つ特定のファイルのみを一覧表示します(たとえば、.cpp.c.hpp.h
  • 基準に一致する結果ファイルのみの完全パス名を提供します。
34
Linda

1つの方法は、-Iおよび-Pスイッチでパターンを使用することです。

tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/

-fは、各ファイルの完全パスを出力し、-Iは、縦棒で区切られたパターン内のファイルを除外します。 -Pスイッチには、特定の拡張子に一致するパターンにリストされているファイルのみが含まれます。

56
user13742

検索のディレクトリを除外するためにfindのfindを使用するtreeおよびPruneコマンドを使用し、パターンの検索に_tree -P_を使用します。

Pruneスイッチを使用します。たとえば、miscディレクトリを除外する場合は、検索コマンドに_-path ./misc -Prune -o_を追加するだけです。

たとえば、_find . -path ./misc -Prune -o -exec tree -P <pattern> {} \;_または_-name "*.cpp" in find_を使用できます

複数のディレクトリを除外するため

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -Prune -o

4
harish.venkat

真の解決策は、完全なパスを出力し、不要なパスをフィルターで除外し、最後に出力を修正することです。

tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'

すべてのファイルが出力に必要な場合は、「d」パラメーターを削除します。

詳細な説明は、 http://qaon.net/press/archives/572 にあります。日本語が理解できる場合。

2
Afante