A maioria dos sistemas de arquivos não armazena o tempo de criação de um arquivo, então o melhor que você pode fazer é verificar a última vez que o arquivo foi modificado.
Se você tiver uma versão recente do GNU find (por exemplo, no Linux ou Cygwin) ou FreeBSD ou OSX, você pode comparar diretamente a data de um arquivo com a de outro arquivo. Além disso, essas versões do find podem usar o tempo de criação do arquivo (chamado de seu horário de nascimento, indicado por B
), se estiver disponível em seu sistema. Substitua B
por m
abaixo para usar a hora da modificação em vez da hora de nascimento.
find /path/to/directory -newerBt '2009-01-01' ! -newerBt '2010-01-01' -type f -delete
Execute uma vez sem -delete
primeiro para garantir que esses arquivos sejam os desejados. O comando acima também excluirá arquivos em subdiretórios; se isso não for desejado, adicione -mindepth 1 -maxdepth 1
após o nome do diretório.
Se a sua versão de find
não tiver o -newerXY
primary, você precisará criar arquivos de timestamp para marcar os limites do intervalo de vezes que deseja corresponder.
touch -t 200901010000 /tmp/from
touch -t 201001010000 /tmp/to
find /path/to/directory -newer /tmp/from ! -newer /tmp/to -type f -exec rm {} +
Os qualificadores do Zsh podem corresponder arquivos em um intervalo de tempo, mas os limites podem ser indicado apenas em relação à data atual (por exemplo, N dias atrás).
rm /path/to/directory/*(.m+566^m+931)
Você também pode usar arquivos de registro de data e hora para datas precisas, mas perde na abrangência.
touch -t 200901010000 /tmp/from
touch -t 201001010000 /tmp/to
rm /path/to/directory/*(.e\''[[ $REPLY -nt /tmp/from && $REPLY -ot /tmp/to ]]'\')