我正在创建一个脚本,该脚本将项目文件夹以及其他一些模块文件夹生成到另一个文件夹中。我想展示生成的项目文件夹结构在最终树中的外观,但避免扩展所有其他文件夹,以便可视化更清晰。
例如,如果我tree
单独这样做,会发生以下情况:
.
├── CMakeLists.txt
├── cfg
│ ├── hsm_engine_cfg.h
│ ├── osal_rtos_defs.h
│ ├── system_events.h
│ ├── system_tasks.h
│ ├── system_trace_cfg.h
│ └── test_delete_cfg.h
├── hsm-engine
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── component.mk
│ ├── docs
│ │ ├── HSM-Engine.mdj
│ │ ├── images
│ │ │ ├── choiceState.png
│ │ │ ├── inconditionalTransition.png
│ │ │ ├── inconditionalTransitionTwoEvents.png
│ │ │ ├── inconditionalTransitionTwoEventsOneGuard.png
│ │ │ ├── inconditionalTransitionWithActions.png
│ │ │ ├── simpleStateEmpty.png
│ │ │ ├── simpleStateEntry.png
│ │ │ ├── simpleStateEntryDo.png
│ │ │ └── simpleStateEntryExit.png
│ │ └── readme.md
│ ├── hsm_engine.c
│ ├── hsm_engine_cfg.h.txt
│ ├── include
│ │ ├── hsm_engine.h
│ │ ├── hsme_history_entry_struct_macro.h
│ │ ├── hsme_hsm_handler_macro.h
│ │ ├── hsme_state_transitions_macro.h
│ │ ├── hsme_states_array_macro.h
│ │ └── hsme_states_enum_macro.h
│ └── tools
│ ├── hsm-parser
│ └── hsm-parser.exe
├── osal
│ ├── CMakeLists.txt
│ ├── FreeRTOSConfig.h.txt
│ ├── Kconfig
│ ├── README.md
│ ├── component.mk
│ ├── include
│ │ ├── osal.h
│ │ ├── osal_events.h
│ │ ├── osal_task_sync.h
│ │ └── osal_tasks.h
│ ├── osal_events.c
│ ├── osal_rtos_defs.h.txt
│ ├── osal_task_sync.c
│ ├── osal_tasks.c
│ ├── system_events.h.txt
│ └── system_tasks.h.txt
├── test-delete
│ ├── CMakeLists.txt
│ ├── include
│ │ ├── test_delete_api.h
│ │ └── test_delete_event_id.h
│ ├── test_delete.c
│ ├── test_delete.h
│ └── test_delete_cfg.h.txt
├── test-gtest
│ ├── CMakeLists.txt
│ ├── README.md
│ └── test_delete_testsuite.cpp
├── test_delete_main.c
└── trace
├── CMakeLists.txt
├── Kconfig
├── README.md
├── component.mk
├── include
│ ├── colors.h
│ └── system_trace.h
├── system_trace.c
└── system_trace_cfg.h.txt
正如您所看到的,这是很多输出,并且不清楚我感兴趣的创建的文件夹是test-delete
.
我尝试过的tree -P 'test-delete*|test_delete*'
确实很接近我需要的。它给出:
.
├── cfg
│ └── test_delete_cfg.h
├── hsm-engine
│ ├── docs
│ │ └── images
│ ├── include
│ └── tools
├── osal
│ └── include
├── test-delete
│ ├── include
│ │ ├── test_delete_api.h
│ │ └── test_delete_event_id.h
│ ├── test_delete.c
│ ├── test_delete.h
│ └── test_delete_cfg.h.txt
├── test-gtest
│ └── test_delete_testsuite.cpp
├── test_delete_main.c
└── trace
└── include
但它仍在扩展所有文件夹,这并不理想。我正在寻找正确的tree
配置,所以我有这个:
.
├── cfg
│ └── test_delete_cfg.h
├── hsm-engine
├── osal
├── test-delete
│ ├── include
│ │ ├── test_delete_api.h
│ │ └── test_delete_event_id.h
│ ├── test_delete.c
│ ├── test_delete.h
│ └── test_delete_cfg.h.txt
├── test-gtest
├── test_delete_main.c
└── trace
正如你在这里看到的。仅cfg
和test-delete
文件夹展开,其余部分不展开。有办法实现这一点吗?
答案1
假设您的文件名不包含换行符,您始终可以这样做:
find . -path '*test[-_]delete*' | tree --fromfile /dev/stdin
或者
find . | grep 'test[-_]delete' | tree --fromfile /dev/stdin
答案2
如果您的目标是查找名称中带有“test-delete”的文件,那么最好使用find
:
find . -name test-delete*