Bashは2つのファイルセットを繰り返します。

Bashは2つのファイルセットを繰り返します。

両方のフォルダを繰り返し、ファイルをPythonプログラムとして実行するbashスクリプトを作成しようとしています。 Pythonプログラムは2つの入力ファイル(各フォルダの対応するファイル)を受け入れ、1つのファイルを出力します。

次のように見えます。

folder 1/
    Run_1.out
    Run_2.out
    Run_3.out
    ...
folder 2/
    Sym_1.g0.out
    Sym_2.g0.out
    Sym_3.g0.out
    ...

Pythonプログラムは対応する入力(例:Run_1.outSym_1.g0.out)を取得し、次のファイルを出力します。

    NOCI.py Run_1.out Sym_1.g0.out outputfile

Pythonプログラムは、端末を介して一対のファイルを使用するとうまく機能しますが、360組のファイルがあるため、スクリプトを使用する必要があると思いました。これまでに2つのforループを書いてみましたが、うまくいかないようです。

    #!/bin/bash
    FILE1=*.out
    FILE2=*.g0.out
    for i in $FILE1
    do
        for j in $FILE2
            do
                NOCI.py $i $j ${i}_${outputfile}
        done
    done

ベストアンサー1

matchfolder 1/Run_1.outなどfolder 2/Sym_1.g0.out360 組については次のようになります。

for n in {1..360}
do
    NOCI.py "folder 1/Run_$n.out" "folder 2/Sym_$n.g0.out" outputfile
done

または、ペアリングされたファイルの順序が間違っている場合は、ファイルを選択してRun_N.outそのSym_N.g0.outファイルをリンクすることもできます。

for r in "folder 1/Run_"*.out
do
    n="${r#folder 1/Run_}"; n="${n%.out}"
    s="folder 2/Sym_$n.out"
    NOCI.py "$r" "$s" outputfile
done

おすすめ記事