A maneira mais rápida de encontrar o maior arquivo em um diretório e subdiretórios [duplicado]

0

Eu preciso encontrar o maior arquivo no diretório atual e subsequente. Eu tentei

ls -Rlh | awk '{print $3 " " $5 " " $9}' 

mas não sei se está tudo bem, como classificar e selecionar o maior arquivo.

    
por Alex 20.11.2017 / 16:22

2 respostas

3
Solução

GNU find + sort + head (para qualquer nível de profundidade de diretório), assumindo caminhos de arquivo don ' t contém caracteres de nova linha:

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s - especificador de formato apontando para o tamanho do arquivo (em bytes)
  • %p - especificador de formato apontando para o nome do arquivo
  • sort -nr - classifica registros numericamente em ordem inversa
  • head -1 - imprima a primeira linha / registro TOP

Para obter um valor de tamanho de arquivo legível por humanos - estenda o pipeline com o comando GNU numfmt (se suportado):

find . -type f -printf "%s %p\n" | sort -nr | head -1 | numfmt --to=si
    
por 20.11.2017 / 16:27
0

Com zsh , para o maior arquivo normal:

ls -ld -- **/*(.DOL[1])

(é claro que você pode substituir ls -ld -- por qualquer comando. Se estiver usando o GNU ls ou compatível, veja também a opção -h para tamanhos legíveis )

  • . : apenas arquivos regulares (não diretórios, links simbólicos, dispositivos, fifos ...)
  • D : inclua os ocultos e desça em diretórios ocultos
  • OL : ordem inversa por tamanho ( L inth).
  • [1] : apenas a primeira correspondência.

Se houver empates, você terá um deles aleatoriamente. Se você quiser o primeiro em ordem alfabética, adicione um extra on ( o rder por n ame) para ordenar os links alfabeticamente.

    
por 20.11.2017 / 17:00