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" )
所以我有一堆来自不同客户的不同参数 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" )