Como posso encontrar os três maiores arquivos em um diretório? [duplicado]

0
O

link mostra uma maneira de encontrar os três arquivos alterados mais recentes (direta ou indiretamente) em um diretório.

find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print $2}'

Eu tento encontrar os três maiores arquivos em um diretório substituindo stat -c '%Y %n' por stat -c '%B %n' . mas não parece funcionar corretamente. porque:

 %b - Number of blocks allocated (see ‘%B’)
 %B - The size in bytes of each block reported by ‘%b’

Meu palpite é que %b não informa o tamanho de um arquivo, mas não tenho certeza.

Então, o que devo fazer?

    
por Tim 15.06.2018 / 00:23

1 resposta

1

% b reporta o tamanho do arquivo, mas reporta em blocos. Isso pode ou não ser bom o suficiente para seus propósitos. Você sempre pode usar ls -l para obter bytes se quiser:

find . -type f | xargs ls -l | sort -n -k5 | tail -n 3

Se nomes de arquivos contiverem espaços em branco, a solução padrão será

find . -type f -print0 | xargs -0 ls -l | ...

O -print0 faz com que find use um byte nulo como um separador entre os nomes, que é então usado como o separador com xargs -0 .

    
por 15.06.2018 / 00:34

Tags