Encontre os arquivos que foram alterados nas últimas 24 horas

265

Por exemplo, um servidor MySQL está sendo executado na minha máquina Ubuntu. Alguns dados foram alterados nas últimas 24 horas.

Quais scripts (Linux) podem encontrar os arquivos que foram alterados nas últimas 24 horas?

Por favor, liste os nomes dos arquivos, tamanhos e horário de modificação.

JackWM
fonte
1
Você poderia usar stackoverflow.com/questions/4561895/...
Vaugham

Respostas:

479

Para encontrar todos os arquivos modificados nas últimas 24 horas (último dia inteiro) em um diretório específico específico e seus subdiretórios:

find /directory_path -mtime -1 -ls

Deve ser do seu agrado

O -antes 1é importante - significa que qualquer coisa mudou um dia ou menos atrás. Um +antes 1significaria que qualquer coisa mudou há pelo menos um dia atrás, enquanto não ter nada antes 1significaria que ela foi alterada exatamente um dia atrás, nem mais, nem menos.

Xavjer
fonte
17
legais! Que tal duas últimas horas?
JackWM
114
usar "-mmin -120" em vez de mtime
Xavjer
1
por que o -antes do valor numérico?
EsseTi
6
O argumento para -mtime é interpretado como o número de dias inteiros na idade do arquivo. -mtime + n significa estritamente maior que, -mtime -n significa estritamente menor que.
Xavjer
3
Para o leitor: não se esqueça de remover o -lsao usar em um script
redolent
41

Você pode fazer isso com

find . -mtime 0

De man find:

[O] tempo desde que cada arquivo foi modificado pela última vez é dividido por 24 horas e qualquer restante é descartado. Isso significa que, para corresponder a -mtime 0, um arquivo precisará ter uma modificação no passado, que ocorre há menos de 24 horas.

Michael
fonte
25

Outra maneira, mais humana:

find /<directory> -newermt "-24 hours" -ls

ou:

find /<directory> -newermt "1 day ago" -ls

ou:

find /<directory> -newermt "yesterday" -ls
Maxim Egorushkin
fonte
11

Em sistemas compatíveis com GNU (ou seja, Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more

Isso listará os arquivos e diretórios que foram modificados nas últimas 24 horas ( -mtime 0). Ele os listará com a hora da última modificação em um formato que pode ser classificado e legível por humanos ( %T+), seguido pelo tamanho do arquivo ( %s), seguido pelo nome do arquivo completo ( %p), cada um separado por tabulações ( \t).

2>/dev/nulljoga fora qualquer saída stderr, para que as mensagens de erro não turvem as águas; sort -rclassifica os resultados modificados mais recentemente primeiro; e | morelista uma página de resultados por vez.

Stephen G Tuggy
fonte
2
Você também pode usar em | lessvez de | more, suponho.
Stephen G Tuggy
7

Para outras pessoas que chegarem aqui no futuro (inclusive eu), adicione uma opção -name para encontrar tipos de arquivos específicos, por exemplo: find /var -name "*.php" -mtime -1 -ls

resedasue
fonte
5

Este comando funcionou para mim

find . -mtime -1 -print
BhandariS
fonte