При развертывании программного обеспечения я отправляю заархивированный файл на целевой сервер и извлекаю его содержимое. В дополнение к этому, я также помещаю файл метаданных в каталог, детализируя то, что было развернуто.
Если я хочу найти какие-либо файлы, которые были изменены с момента развертывания программного обеспечения, я могу просто найти файлы, которые имеют новое время модификации, чем файл метаданных:
find . -newer deployment_metadata.txt
Это красиво и прямо.
Теперь я хотел бы также найти файлы, которые старше, чем файл метаданных развертывания. Можно предположить, что вы можете использовать символ взрыва, чтобы отменить "более новую" проверку
find . ! -newer deployment_metadata.txt
Но "не новее" не совсем эквивалентно "старому", поскольку любые файлы с той же временной меткой также "не новее", поэтому команда также включает все файлы, которые я только что развернул!
Итак, мне было интересно, если я пропустил трюк, когда дело доходит до (строго) старых файлов?
Мое текущее решение состоит в том, чтобы создать новый файл (в временном каталоге) с помощью touch
, время модификации которого составляет одну минуту перед файлом deploy_metadata.txt. Тогда я могу использовать следующие аргументы ! -newer /var/tmp/metadtata_minus_1
.
Это работает, но кажется пустой тратой времени на создание, а затем очистку файла в временном каталоге - тем более, что разные пользователи могут использовать мой скрипт для проверки этого (не хотят проблем с владением файлами, поэтому На самом деле я зашел так далеко, что добавил ${USER}
к имени файла.