Blog Linux Avante

Como encontrar arquivos modificados nos últimos N dias ou minutos usando find

14 de maio de 2021

Este artigo explica como localizar todos os arquivos em um diretório que foram alterados nos últimos N minutos ou dias, ou aqueles com uma data de modificação anterior a N minutos ou dias, por exemplo. Isso é feito usando o comando find.

Comando find no terminal mostrando texto de ajuda

Para encontrar os arquivos que foram alterados (com o tempo de modificação de dados dos arquivos anterior a) nos últimos N dias de um diretório e subdiretórios, use:

Comandos para usar no terminal

find /diretorio/caminho/ -mtime -N -ls

Onde:

  • find é a ferramenta de linha de comando do Unix para encontrar arquivos (e mais)
  • /diretorio/caminho/ é o caminho do diretório onde procurar os arquivos que foram modificados. Substitua-o pelo caminho do diretório onde você deseja procurar os arquivos que foram modificados nos últimos N dias
  • -mtime -N é usado para combinar arquivos que tiveram seus dados modificados nos últimos N dias. Substitua N por um número (inteiro)
  • -ls lista os arquivos resultantes (os arquivos que foram modificados nos últimos N dias) no formato ls -dils na saída padrão. Você pode pular isso, mas usando isso você obterá mais informações como o tamanho do arquivo, permissões, a data de modificação, etc.

Exemplos:

Encontre todos os arquivos modificados no último dia (24 horas; entre agora e um dia atrás) em um diretório e subdiretórios:

Comandos para usar no terminal

find /directory/path/ -mtime -1 -ls

-mtime -1 é o mesmo que -mtime 0.

Encontre todos os arquivos modificados nos últimos 30 dias:

Comandos para usar no terminal

find /directory/path/ -mtime -30 -ls

Você também pode gostar de: Histórico do Bash: como mostrar um carimbo de data/hora quando cada comando foi executado

Mas e se você precisar encontrar os arquivos que têm uma data de modificação anterior a N, por exemplo, mais de 30 dias? Nesse caso, você precisa usar +N em vez de -N, desta forma:

Comandos para usar no terminal

find /directory/path/ -mtime +N -ls

Exemplos:

  • Encontre todos os arquivos com data de modificação anterior a 7 dias:

Comandos para usar no terminal

find /directory/path/ -mtime +7 -ls

  • Encontre todos os arquivos modificados há mais de 48 horas (pelo menos 2 dias atrás):

Comandos para usar no terminal

find /directory/path/ -mtime +1 -ls

  • Encontre todos os arquivos modificados entre 24 e 48 horas atrás (entre 1 e 2 dias atrás):

Comandos para usar no terminal

find /directory/path/ -mtime 1 -ls

Então, por que 1 é um dia atrás, e +1 mais tarde que 2 dias / 48 horas? Isso porque, de acordo com man find, todas as partes fracionárias são ignoradas, então, se um arquivo foi modificado pela última vez há 1 dia e 23 horas, -mtime +1 não corresponderá, tratando-o como se o arquivo tivesse sido modificado pela última vez há 1 dia, 0 horas, 0 minutos, e 0 segundos atrás; veja esta explicação sobre por que esse é o caso.

Sendo este o caso, como você pode obter todos os arquivos modificados pelo menos 1 dia atrás? Use +0:

Comandos para usar no terminal

find /directory/path/ -mtime +0 -ls

Usando minutos em vez de dias

Para localizar os arquivos que foram modificados N minutos atrás ou com uma data de modificação anterior N, basta substituir -mtime por -mmin.

Portanto, se você quiser encontrar os arquivos que foram alterados (com o tempo de modificação dos dados dos arquivos anterior a) nos últimos N minutos de um diretório e subdiretórios, use:

Comandos para usar no terminal

find /directory/path/ -mmin N -ls

Exemplos:

  • Encontre todos os arquivos modificados nos últimos 5 minutos em um diretório e subdiretórios:

Comandos para usar no terminal

find /directory/path/ -mmin -5 -ls

  • Encontre todos os arquivos com data de modificação anterior a 5 minutos:

Comandos para usar no terminal

find /directory/path/ -mmin +5 -ls

Você também pode gostar: Starship é um prompt de shell mínimo e rápido escrito em Rust

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.