Bash:特定の部分文字列を含むフォルダを処理し、内部的に再帰を続行するスクリプトを作成するには?

Bash:特定の部分文字列を含むフォルダを処理し、内部的に再帰を続行するスクリプトを作成するには?

次の質問に関するフォローアップの質問です。Bash:各ディレクトリにmy_suites.cfgファイルを使用してコマンドを実行しますか?

元の質問に対する回答のグローバル再帰繰り返しが強すぎます。処理中のフォルダの名前を確認して制限したいと思います。

  • サブストリングBlを含むフォルダーを含むルートフォルダーでこのスクリプトを実行します。
  • 各 Bl フォルダー内には、サブストリング test を含むサブフォルダーがあります。
  • *testフォルダには、通常my_suites.cfgを含むbinフォルダがあります。ここでmakeコマンドのバリエーションを実行したいと思います。

* Blフォルダには、my_suites.cfgに似た構造を含むサブストリングLwUを含む追加のサブフォルダがあります。以前の回答はグローバル反復を使用しているため、すべての項目を繰り返し、時間がかかりすぎます。

部分文字列LwUを含むフォルダをスキップするために、繰り返し中にフォルダ名の部分文字列を確認できますか?

編集:私が言及した前の質問に対する答え:

shopt -s globstar
for d in **/; do if [[ -f "$d/my_suites.cfg" ]]; then cd "$d"; make; cd -; fi; done

Bl フォルダのディレクトリ構造の例です。 Blフォルダのtest / binフォルダにあるコマンドを実行したいです。 test / binフォルダ名は必ずしも「test」である必要はありませんが、my_suites.cfgを含みます。たとえば、フォルダ名は extra_test として指定できます。サブフォルダ innerModuleSwU も同様の構造を持っています。これらのフォルダにはサブストリング SwU が含まれます。私はこれらを扱うことをスキップしたいと思います。

├── placeholderBl
│   ├── doc
│   │   ├── my_suites.cfg
│   │   └── src
│   ├── my_suites.cfg
│   ├── someFolderIfU
│   ├── innerModuleSwU
│   │   ├── export
│   │   ├── src
│   │   └── test
│   │       ├── bin
│   │       │   └── my_suites.cfg
│   │       └── src
│   ├── test
│   │   ├── bin
│   │   │   ├── build.spec
│   │   │   ├── my_suites.cfg
│   │   ├── src

ベストアンサー1

#!/bin/bash

for folder in $(find / -type d 2>/dev/null | grep Bl | grep test) ;do
  [ -f "$folder"/my_suites.cfg ] || continue
  cd "$folder"
  make whatever
  cd -
done

おすすめ記事