У меня есть каталог / files с большим количеством файлов. Я хочу переместить их в каталог / archive. Процесс перемещения занимает несколько минут, так как файлов очень много.
В процессе перемещения я создал новый файл с именем новый-файл.jpg в каталоге / files. Будет ли новый-файл.jpg перемещен в каталог / archive или нет?
Мне нужно, чтобы в каталоге / archived были только все старые файлы (файлы существовали на момент запуска zip-архива). Как этого добиться?
Если вы используете шаблон глобуса, как в tar cf old.tar.gz /files/*.dat
, то этот шаблон глобуса будет разрешен 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$'
сохранить отметку времени при запуске процесса перемещения в переменную в качестве начальной точки и проверить, меньше ли перемещенный файл
mtime
, чем сохраненное значение