ツリーコマンドを使用して選択したフォルダのみを展開する方法は?

ツリーコマンドを使用して選択したフォルダのみを展開する方法は?

他のモジュールフォルダと一緒にプロジェクトフォルダを別のフォルダに作成するスクリプトを作成しています。生成されたプロジェクトフォルダ構造が最終ツリーでどのように見えるかを見たいのですが、視覚化がより明確になるように他のすべてのフォルダを展開しないでください。

たとえば、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

おすすめ記事