回答:
1つの方法は、-I
と-P
スイッチでパターンを使用することです:
tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/
は-f
、各ファイルの完全なパスを出力-I
し、垂直バーで区切られたパターン内のファイルを除外します。-P
スイッチinlcudes特定の拡張子をパターンマッチングに記載されているファイルのみ。
sed: illegal option -- I
使用find
とtree
使用の発見者であるコマンドをprune
検索し、使用のディレクトリを除外するためのtree -P
パターンを検索します。
たとえば、misc
ディレクトリを除外する場合は-path ./misc -prune -o
、findコマンドにa を追加するだけで、pruneスイッチを使用します。
例えば 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
find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o
かfind . -path ./misc -prune -o -exec tree -P *.cpp {} \;
真の解決策は、完全なパスを出力し、不要なパスを除外し、最終的に出力を修正することです。
tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'
出力ですべてのファイルが必要な場合は、「d」パラメーターを削除します。
詳細については、http://qaon.net/press/archives/572をご覧ください。日本語が理解できる場合。
-I bin
not)-I bin/
。