Como encontrar os arquivos criados na última hora no unix


135

Como encontrar os arquivos criados na última hora no unix

Respostas:


213

Se a dir à pesquisa é srch_direntão ou

$ find srch_dir -cmin -60 # change time

ou

$ find srch_dir -mmin -60 # modification time

ou

$ find srch_dir -amin -60 # access time

mostra arquivos criados, modificados ou acessados ​​na última hora.

correção: ctime é para a hora do nó da mudança (embora não tenha certeza, me corrija)


2
Isso é ótimo e tudo, mas essas bandeiras não existem no Solaris findque estou usando. O OP disse que o Unix e acho que estes são apenas Linux.
Jiggy

12
O truque é usar valores de tempo negativos ! Não é tão óbvio na página do manual.
Sphakka 11/03/2015

@jiggy A resposta de Ayush fornece um hack (baseado em -newer) que deve funcionar no Solaris.
David Moles 31/03

3
-cmin NÃO é hora da criação, mas muda a hora! acabei de excluir minha causa dir .config na execução do teste, não foi alterada nos últimos X minutos e, quando o fiz, era .... então talvez edite isso ...!
Badmaster 17/10

Ainda acho que o primeiro exemplo de comentário precisa de uma revisão. "alterar hora" é o status do arquivo, não os dados do arquivo
KC Baltz

24

Os sistemas de arquivos UNIX (geralmente) não armazenam os tempos de criação. Em vez disso, há apenas tempo de acesso, tempo de modificação (dados) e tempo de alteração (inode).

Dito isto, findtem -atime -mtime -ctimepredicados:

$ man 1 encontrar
...
-ctime   n
        O primário deve avaliar se a hora da última alteração de
        informações de status do arquivo subtraídas da hora da inicialização,
        dividido por 86400 (com qualquer restante descartado), é n.
...

Assim, find -ctime 0encontra tudo o que o inode foi alterado (por exemplo, inclui a criação de arquivo, mas também conta a contagem de links e as permissões e a alteração do tamanho do arquivo) há menos de uma hora.


86400 segundos é um dia , não uma hora. Assim, o argumento para -ctimeetc está em unidades de dias em vez de horas.
Gaylon

12

confira este link e depois sirva-se.

o código básico é

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg

Obrigado, no entanto, isso procurará apenas t.tmp. E se eu quiser encontrar todos os arquivos criados na última hora.
Ankur

2
Ankur: ele criará um arquivo temporário t.tmp e definirá seu tempo de criação para 2 horas atrás ... depois disso, pesquisará no diretório atual todos os arquivos criados após t.tmp, ou seja, nas últimas 2 horas ..
ayush

4
legal!! Embora o primeiro comando não seja necessário. touchcria o arquivo se ele ainda não existir.
Amir Uval


3
sudo find / -Bmin 60

Na manpágina:

-Bmin n

Verdadeiro se a diferença entre a hora da criação do inode de um arquivo e a hora findfoi iniciada, arredondada para o próximo minuto completo, for n minutos.

Obviamente, convém configurar um pouco de forma diferente, mas esse primário parece a melhor solução para procurar qualquer arquivo criado nos últimos N minutos.


find (GNU findutils) 4.6.0não tem um -Bpredicado
blockloop 27/03

0

Confira este link para mais detalhes.

Para localizar arquivos criados na última hora no diretório atual, você pode usar -amin

encontrar . -amin -60 -type f

Isso encontrará os arquivos criados nas últimas 1 hora.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.