Если вы используете шаблон glob, как в tar cf old.tar.gz /files/*.dat
, то этот шаблон glob будет разрешен bash до фактического вызова команды. Таким образом, команда tar будет называться tar cf old.tar.gz /files/1.dat /files/2.dat ...
, что означает, что файлы, созданные во время выполнения tar, не будут включены.
Это можно визуализировать:
files=(/files/*.dat)
touch /files/new.dat
printf '%s\n' ${files[@]} | grep -P '^/files/new.dat$'