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.