Если вы просто хотите объединить все файлы во всех подкаталогах, имя которых начинается с Log.txt
, вы можете сделать что-то вроде этого:
for dir in DIR*/*; do
date=${dir##*/};
dirname=${dir%%/*};
cat $dir/Log.txt* > Log.txt_"${date}"_"${dirname}".txt;
done
Если вам нужны файлы в обратном числовом порядке, от 5 до 1, а затем Log.txt
, вы можете сделать это:
for dir in DIR*/*; do
date=${dir##*/};
dirname=${dir%%/*};
cat $dir/Log.txt.{5..1} $dir/Log.txt > Log.txt_"${date}"_"${dirname}".txt;
done
Это, как вы упомянули в своем вопросе, будет жаловаться на файлы, которые не существуют, но это всего лишь предупреждение. Если вы не хотите этого видеть, вы можете перенаправить вывод ошибок (хотя это также может привести к тому, что вы пропустите допустимые сообщения об ошибках):
for dir in DIR*/*; do
date=${dir##*/};
dirname=${dir%%/*};
cat $dir/Log.txt.{5..1} $dir/Log.txt > Log.txt_"${date}"_"${dirname}".txt;
done 2>/dev/null