Итак, у меня есть множество измерений для изменяющегося параметра T
от разных клиентов. Файлы сохраняются в ${LOGDIR}
и придерживаться следующей схеме именования:bash - подстановочные знаки в списке файлов
${LOGDIR}/client<id>/client_<id>_blahblah_T=<param_value>_rep=<rep_no>.log
Теперь я хочу, чтобы выбрать файлы всех клиентов для фиксированного 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 = "$ {LOGDIR}/$ {prefix}" * "$ {interm}" * "$ {ext}" '', когда все файлы находились в одном каталоге? – User1291
Это не расширит globs и не сделает 'files' массив с расширенными именами совпадающих файлов. – anubhava
Как ни странно, это было так. В любом случае, это не важно, теперь, когда вы разместили правильный способ сделать это. Было просто интересно. – User1291