Que tal usar o utilitário date
para percorrer o intervalo de datas em que você está interessado? Aqui está o que isso pode parecer para o seu exemplo:
# Set the date counter to the start date
d=2017-09-03
# Iterate until we reach the end date (i.e. the date after the last date we want)
while [ "$d" != 2017-10-09 ]; do
# cat each file
cat "localhost_log_file.${d}.txt";
# Increment the date counter
d="$(date -I -d "$d + 1 day")";
done
Veja isto para mais informações:
Como alternativa, você pode passar os resultados do loop para o comando cat
em vez de chamar cat
no corpo do loop.
Veja como isso pode parecer usando a substituição de comando:
d=2017-09-03
cat $(while [ "$d" != 2017-10-09 ]; do
echo "localhost_log_file.${d}.txt";
d="$(date -I -d "$d + 1 day")";
done)
E aqui está a mesma coisa usando um pipe e xargs
:
d=2017-09-03
while [ "$d" != 2017-10-09 ]; do
echo "localhost_log_file.${d}.txt";
d="$(date -I -d "$d + 1 day")";
done | xargs cat