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