2016-10-15 9 views
1

異なるクライアントから異なるパラメータTの測定値がたくさんあります。私は今、これは私のイテレーションごとに1つの出力を取得しbash - ファイルリスト内のワイルドカード

for rep in {1..5} 
do 
    outfile=${OUTDIR}/"aux_rep${rep}.dat" 
    for T in {1..64} 
    do 
     files="${LOGDIR}/log_client"*"/client"*"_T=C=${T}_rep=${rep}.log" 
     echo "new iteration" 
     printf '%s\n' "${files[@]}" 
    done 
done 

固定T,repのためにすべてのクライアントのファイルを選択したい

${LOGDIR}/client<id>/client_<id>_blahblah_T=<param_value>_rep=<rep_no>.log 

:ファイルが${LOGDIR}に保存され、次の命名パターンに準拠しています

new iteration 
/home/.../log_client*/client*_T=<param_value>_rep=<rep_no>.log 

明らかに、私は明らかにこれらの*が解決されたと思っていました。私は成功し、他のスクリプトで

files="${LOGDIR}/${prefix}"*"${interm}"*"${ext}" 

を使用しましたので、(それがループ内ではなかったと、すべてのファイルが同じディレクトリにあったが)

そして、私は少し驚いています。

filesに正しいデータファイルを一覧表示するにはどうすればよいですか?

答えて

2

この行は、宣言しfiles配列を移入されていません。

files=("${LOGDIR}/log_client"*"/client"*"_T=C=${T}_rep=${rep}.log") 
+0

それをやった、ありがとう:

files="${LOGDIR}/log_client"*"/client"*"_T=C=${T}_rep=${rep}.log" 

files配列を取り込むために、このように変更する必要があり。しかし、なぜすべてのファイルが同じディレクトリにあったとしても、 '' files = "$ {LOGDIR}/$ {prefix}" * "$ {interm}" * "$ {ext}" '' – User1291

+0

これはグロブを展開せず、 'files'を展開して一致するファイル名を持つ配列にしません。 – anubhava

+1

奇妙なことに、それはしました。とにかく、あなたがこれを行う正しい方法を投稿したので、それは重要ではありません。ちょうど不思議でした。 – User1291

関連する問題