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.
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:
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:
find /directory/path/ -mtime -1 -ls
-mtime -1
é o mesmo que -mtime 0
.
Encontre todos os arquivos modificados nos últimos 30 dias:
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:
find /directory/path/ -mtime +N -ls
Exemplos:
find /directory/path/ -mtime +7 -ls
find /directory/path/ -mtime +1 -ls
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
:
find /directory/path/ -mtime +0 -ls
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:
find /directory/path/ -mmin N -ls
Exemplos:
find /directory/path/ -mmin -5 -ls
find /directory/path/ -mmin +5 -ls
Você também pode gostar: Starship é um prompt de shell mínimo e rápido escrito em Rust
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Find Files Modified In The Last N Days Or Minutes Using find