트리 명령을 사용하여 선택한 폴더만 확장하는 방법은 무엇입니까?

트리 명령을 사용하여 선택한 폴더만 확장하는 방법은 무엇입니까?

다른 모듈 폴더와 함께 프로젝트 폴더를 다른 폴더에 생성하는 스크립트를 만들고 있습니다. 생성된 프로젝트 폴더 구조가 최종 트리에서 어떻게 보이는지 보여주고 싶지만 시각화가 더 명확해지도록 다른 모든 폴더를 확장하지 마세요.

예를 들어, 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*

관련 정보