Câu trả lời:
Một cách là sử dụng các mẫu với -Ivà các -Pcông tắc:
tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/
Bản -fin đường dẫn đầy đủ cho mỗi tệp và -Iloại trừ các tệp trong mẫu ở đây được phân tách bằng một thanh dọc. Công -Ptắ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 findvà treelệ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ừ miscthư mục chỉ cần thêm a -path ./misc -prune -ovà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 -ohoặ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 binkhông-I bin/.