Encontre os maiores arquivos em um diretório em um intervalo de datas específico

1

Estou procurando um comando ou conjunto de comandos do UNIX, pelo qual posso encontrar os 20 maiores arquivos em um diretório, com base em um intervalo de datas específico.

Para fazer isso, achei que poderia definir o período tocando em alguns arquivos e, em seguida, fazendo uma descoberta com base nas datas desses arquivos. ou seja,

touch /tmp/point.start -d "2018-06-01 00:00"
touch /tmp/point.end -d "2018-06-30 00:00"

e, em seguida, execute

find . -newer /tmp/point.start ! -newer /tmp/point.end

E para obter os 20 arquivos mais lentos que eu pretendia executar, no diretório

ls -ltr | sort -nk5 | tail -20

Mas o que não consigo fazer é combinar os dois

find . -newer /tmp/point.start ! -newer /tmp/point.end | ls -ltr | sort -nk5 | tail -20

simplesmente ignora a primeira parte e lista os 20 maiores arquivos no diretório, independentemente do tamanho. Tenho certeza de que é algo muito óbvio que estou perdendo, mas não consigo descobrir o quê!

(Estou no RedHat 5.3 e não tenho acesso ao newermt)

    
por Stuart Douglas 06.09.2018 / 15:12

3 respostas

0

Tente isso,

find . -newer /tmp/point.start ! -newer /tmp/point.end  ! -path . | xargs ls -ltr | sort -nk5 | tail -20
  • xargs construir e executar linhas de comando a partir da entrada padrão
por 06.09.2018 / 15:20
3

Se você puder usar -printf com seu find :

find . -newer /tmp/point.start ! -newer /tmp/point.end -printf '%s %p\n' | 
  sort -rn | head -20
    
por 06.09.2018 / 15:21
1

com zsh :

autoload age # best in ~/.zshrc if you use that often
ls -ldS -- *(De:age 2018-06-01 2018-06-30:OL[1,20])
  • -S : classificar por tamanho. Com o GNU ls (como encontrado no RedHat 5.3), você pode usar -U para não classificar como zsh já classificou a lista com OL .
  • (...) : qualificador glob
  • D : não ignore os arquivos de pontos.
  • e:code: avalia o código para decidir se deseja selecionar o arquivo
  • age date1 date2 : retorna true para arquivos com mtime nesse intervalo (sem time part, o padrão é 00:00:00)
  • OL : ordenação inversa por tamanho (tamanho)
  • [1,20] : selecione apenas os primeiros 20.
por 06.09.2018 / 15:31

Tags