bash - todos - procurar palavra dentro de arquivo linux




Como usar o 'find' para procurar arquivos criados em uma data específica? (6)

Como eu uso o comando UNIX para procurar por arquivos criados em uma data específica?


@ Max: está certo sobre o tempo de criação.

No entanto, se você quiser calcular o argumento de dias decorridos para um dos -atime , -ctime , -mtime , poderá usar a seguinte expressão

ELAPSED_DAYS=$(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))

Substitua "2008-09-24" pela data que você quiser e ELAPSED_DAYS será definido para o número de dias entre essa data e hoje. (Atualizar: subtraia um do resultado para alinhar com o arredondamento de data do encontro.)

Então, para encontrar qualquer arquivo modificado em 24 de setembro de 2008, o comando seria:

find . -type f -mtime $(( ( $(date +%s) - $(date -d '2008-09-24' +%s) ) / 60 / 60 / 24 - 1 ))

Isso funcionará se a sua versão do find não suportar os predicados -newerXY mencionados na resposta do @Arve :.


Com os switches -atime, -ctime e -mtime encontrados, você pode chegar perto do que deseja alcançar.


Eu encontrei este scriplet em um script que exclui todos os arquivos com mais de 14 dias:

CNT=0
for i in $(find -type f -ctime +14); do
  ((CNT = CNT + 1))
  echo -n "." >> $PROGRESS
  rm -f $i
done
echo deleted $CNT files, done at $(date "+%H:%M:%S") >> $LOG

Eu acho que um pouco de "achado de homem" adicional e procurando os parâmetros -ctime / -atime etc. ajudarão você aqui.


São dois passos mas gosto de fazer assim:

Primeiro crie um arquivo com uma data / hora específica. Neste caso, o arquivo é 2008-10-01 à meia-noite

touch -t 0810010000 /tmp/t

Agora podemos encontrar todos os arquivos que são mais novos ou mais antigos do que o arquivo acima (indo pela data de modificação do arquivo. Você também pode usar -anewer para acessar e -cnewer status de arquivo alterado).

find / -newer /tmp/t
find / -not -newer /tmp/t

Você também pode ver arquivos entre determinadas datas criando dois arquivos com toque

touch -t 0810010000 /tmp/t1
touch -t 0810011000 /tmp/t2

Isso localizará arquivos entre as duas datas e horas

find / -newer /tmp/t1 -and -not -newer /tmp/t2

Você poderia fazer isso:

find ./ -type f -ls |grep '10 Sep'

Exemplo:

[[email protected] etc]# find /var/ -type f -ls | grep "Dec 24"
791235    4 -rw-r--r--   1 root     root           29 Dec 24 03:24 /var/lib/prelink/full
798227  288 -rw-r--r--   1 root     root       292323 Dec 24 23:53 /var/log/sa/sar24
797244  320 -rw-r--r--   1 root     root       321300 Dec 24 23:50 /var/log/sa/sa24

find location -ctime time_period

Exemplos de time_period:

  • Mais de 30 dias atrás: -ctime +30

  • Menos de 30 dias atrás: -ctime -30

  • Exatamente há 30 dias: -ctime 30





find