Maneira mais rápida de encontrar o maior arquivo em um diretório e subdiretórios

Maneira mais rápida de encontrar o maior arquivo em um diretório e subdiretórios

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

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

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

Responder1

GNUfind+sort+headsolução (para qualquer nível de profundidade de diretório), assumindo que os caminhos dos arquivos não 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- classificar registros numericamente em ordem inversa
  • head -1- imprimir a primeira linha/registro TOP

Para obter umlegível por humanosvalor do tamanho do arquivo - estenda o pipeline com numfmto comando GNU (se compatível):

find . -type f -printf "%s %p\n" | sort -nr | head -1 | numfmt --to=si

Responder2

Com zsh, para o maior arquivo regular:

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

(é claro que você pode substituir ls -ld --por qualquer comando. Se estiver usando GNU lsou compatível, veja também a -hopção paratamanhos legíveis por humanos)

  • .: apenasregulararquivos (não diretórios, links simbólicos, dispositivos, fifos...)
  • D: inclui os ocultos e desce para diretórios ocultos
  • OL: ordenado inversamente por tamanho ( Length).
  • [1]: apenas a primeira partida.

Se houver empates, você obterá qualquer um deles aleatoriamente. Se você quiser o primeiro em ordem alfabética, adicione um extra on( order by name) para classificar os empates em ordem alfabética.

informação relacionada