Encontre um arquivo com 30 minutos de idade

12

Como posso encontrar o arquivo com 30 minutos /bin/ksh?

Aravind
fonte
4
Você quer dizer "o conteúdo foi alterado 30 minutos atrás" ou "não existia até que ele foi criado 30 minutos atrás"? Além disso, qual sistema operacional você está usando? Sistemas operacionais diferentes vêm com versões diferentes do find.
Mark Plotnick
@ Mark Plotnick eu quero encontrar o arquivo que eram de 30 minutos velho
Aravind
Eu acho que ele / ela significa foi criado há 30 minutos . Como se, por exemplo, alguém tivesse X anos de idade, nasceu X há muito tempo.
21114 erik

Respostas:

15

No Linux, não há faixa do horário de criação de um arquivo. Você só pode acessar:

  • o horário da última modificação do conteúdo (uma criação conta como uma modificação, é claro) mtime,
  • a hora do último acesso, atime,
  • a hora da última modificação dos metadados ctime,.

Se você deseja procurar arquivos com um teste com base nesses horários, find( man find) pode ajudá-lo.

Você usaria dessa maneira para encontrar um arquivo acessado exatamente 30 minutos atrás em seu diretório atual e seus subdiretórios:

find -amin 30

Geralmente, você deseja usar um intervalo, pois pode ser difícil fornecer um número exato de minutos:

find -amin +25 -amin -35

Isso encontrará arquivos acessados ​​há mais de 25, mas menos de 35 minutos atrás.

E se você estiver interessado apenas no tempo de modificação e não no tempo de acesso (isto é, leitura), substitua -aminpor -mmin.

lgeorget
fonte
você não quer atime. atime é tempo de acesso.
CTRL-ALT-DELOR
@ Richard O OP não especificou o que queria dizer assim ... De qualquer forma eu colocar mtimedemasiado na resposta
lgeorget
1
@ lgeorget quando eu uso -mtime 30estava mostrando os arquivos com 30 dias de idade.
Aravind
@ user2910201 Ups me estúpido. Xtimeas opções são para dias e as Xminopções para minutos. Meu mau, eu editar a resposta
lgeorget
2
@ user2910201 mas observe que você pode usá-lo Xtimecom qualquer unidade de tempo razoável, como 30mpor trinta minutos ou 5dpor cinco dias
lgeorget
3

Você pode usar mtimepara fazer isso:

find . -mmin 30    #exactly 30 minutes old
ryekayo
fonte
isso informará os arquivos que estavam atrasados createdou modified30 minutos
g4ur4v
@ G4ur4v quando eu uso -mminele está mostrando -mminnão é uma opção válida
Aravind
Tente isto:find /path -mtime +30m
ryekayo
Não sei por que ele não está reconhecendo -mmin, eu olhei muitos exemplos usando esse comando ..
ryekayo
3

Com fora GNU/BSD find

TZ=ZZZ0 touch -t "$(TZ=ZZZ0:30 date +%Y%m%d%H%M.%S)" /reference/file

e depois find . -newer /reference/file

solução dada por Stéphane Chazelas

Aravind
fonte