bash - 文件列表中的通配符

bash - wildcards in file list

所以我有一堆来自不同客户的不同参数 T 的测量值。文件存储在 ${LOGDIR} 中并遵循以下命名模式:

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

我现在想select所有客户的文件固定T,rep

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

这让我每次迭代得到一个输出:

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

很明显,我希望这些 * 得到解决。

我有点惊讶,因为我用过

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

在其他脚本中成功(尽管那不在循环中并且所有文件都在同一目录中)。

如何files列出正确的数据文件?

这一行没有声明和填充 files 数组:

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

填充files数组应该改成这样:

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