Quando implanto meu software, envio um arquivo compactado para o servidor de destino e extraio seu conteúdo. Além disso, ao mesmo tempo, também coloco um arquivo de metadados no diretório, detalhando o que foi implantado.
Se eu quiser encontrar os arquivos que foram alterados desde que implantei o software, posso simplesmente encontrar arquivos com uma nova hora de modificação que o arquivo de metadados:
find . -newer deployment_metadata.txt
Isso é legal e direto.
Agora, também gostaria de encontrar arquivos antigos que o arquivo de metadados de implantação. Alguém poderia assumir que você poderia usar o símbolo de estrondo para negar a verificação "mais recente"
find . ! -newer deployment_metadata.txt
Mas 'not newer' não é exatamente equivalente a 'mais antigo', já que todos os arquivos com o mesmo registro de data e hora também não são mais novos - portanto, o comando também inclui todos os arquivos que acabei de implantar!
Então, eu queria saber se estava faltando um truque quando se trata de encontrar (estritamente) arquivos antigos?
Minha solução atual é criar um novo arquivo (no diretório dir) usando touch
um tempo de modificação de um minuto antes do arquivo deployment_metadata.txt. Então eu sou capaz de usar os seguintes argumentos: ! -newer /var/tmp/metadtata_minus_1
.
Isso funciona, mas parece uma perda de tempo ter que criar e depois limpar o arquivo no diretório temp - especialmente porque usuários diferentes podem estar usando meu script para verificar isso (não deseja problemas de propriedade do arquivo, portanto Na verdade, eu vou até o anexo ${USER}
do nome do arquivo.
find
que estou usandofind --version GNU find version 4.2.27 Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX