Answers:
一种方法是通过-I
和-P
开关使用模式:
tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/
在-f
每个文件打印的完整路径,并且-I
不包括在模式中的文件通过这里竖线分隔。所述-P
开关inlcudes唯一的文件中匹配一定的延伸的图案。
sed: illegal option -- I
use find
和tree
使用find的命令prune
排除搜索目录,并tree -P
用于搜索模式。
使用修剪开关,例如,如果要排除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
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
,不能-I bin/
。