Bashスクリプトはすべてのサブディレクトリを繰り返し、スクリプトディレクトリが存在することを確認してからそこからスクリプトを実行します。

Bashスクリプトはすべてのサブディレクトリを繰り返し、スクリプトディレクトリが存在することを確認してからそこからスクリプトを実行します。

私はbashスクリプトに初めてアクセスし、ループを使用して開始forするディレクトリ内のすべてのフォルダを見つけてから、ステートメントを使用して名前付きの他のifフォルダを見つけるスクリプトを作成しようとしていますtemplates。それから実行したいと思います。そのフォルダに保存されているPythonスクリプトを実行するpythonコマンド。

  • 私のディレクトリ構造は次のとおりです。
    all/
        this_script.sh
        one/
            templates/
                      render_j2.py
        two/
            templates/
                      render_j2.py
    
  • 私が試したthis_script-shことは
    for file in *; do
      if [[ "$file"==*"templates"* ]];
      then
        cd $file
      fi
    done
    
    またこれを試しました:
    for file in *; do
    find . templates
    python render_j2.py; 
    done
    

私の主な問題は、フォルダに入ることができずtemplates、入っても、pythonコマンドが実行するPythonファイルを見つけることができないことです。

ベストアンサー1

すでに find を使用しているので、タスク全体を find にオフロードするのはどうでしょうか?次のことを試すことができます。

find . -type f -path "*/templates/render_j2.py" -execdir python render_j2.py \;

render_j2.pyその後、開始点の下のディレクトリ内のすべてのファイルを検索し、ファイルがあるディレクトリでpythonコマンドを実行します。templates

おすすめ記事