Câu trả lời:
Một cách là sử dụng các mẫu với -I
và các -P
công tắc:
tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/
Bản -f
in đường dẫn đầy đủ cho mỗi tệp và -I
loại trừ các tệp trong mẫu ở đây được phân tách bằng một thanh dọc. Công -P
tắc chỉ bao gồm các tệp được liệt kê trong mẫu khớp với một phần mở rộng nhất định.
sed: illegal option -- I
sử dụng find
và tree
lệnh được sử dụng find prune
để loại trừ các thư mục tìm kiếm và sử dụng tree -P
để tìm kiếm mẫu.
Sử dụng công tắc cắt tỉa, ví dụ nếu bạn muốn loại trừ misc
thư mục chỉ cần thêm a -path ./misc -prune -o
vào lệnh find của bạn.
ví dụ find . -path ./misc -prune -o -exec tree -P <pattern> {} \;
hoặc bạn có thể sử dụng-name "*.cpp" in find
để loại trừ nhiều thư mục sử dụng
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
hoặcfind . -path ./misc -prune -o -exec tree -P *.cpp {} \;
Giải pháp thực sự là xuất các đường dẫn đầy đủ, lọc các đường dẫn không mong muốn ra ngoài và cuối cùng là sửa các đầu ra.
tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'
Nếu tất cả các tệp là cần thiết trong đầu ra, loại bỏ tham số "d".
Giải thích chi tiết có thể được tìm thấy tại: http://qaon.net/press/archives/572 nếu bạn có thể hiểu tiếng Nhật.
-I bin
không-I bin/
.