La forma más rápida de encontrar el archivo más grande en un directorio y subdirectorios

La forma más rápida de encontrar el archivo más grande en un directorio y subdirectorios

Necesito encontrar el archivo más grande en el directorio actual y posterior. Lo intenté

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

pero no sé si está bien, cómo ordenar y seleccionar el archivo más grande.

Respuesta1

ÑUfind+sort+headsolución (para cualquier nivel de profundidad de directorio), suponiendo que las rutas de archivo no contengan caracteres de nueva línea:

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s- especificador de formato que apunta al tamaño del archivo (en bytes)
  • %p- especificador de formato que apunta al nombre del archivo
  • sort -nr- ordenar registros numéricamente en orden inverso
  • head -1- imprimir la primera línea/registro SUPERIOR

Conseguir unlegible por humanosvalor del tamaño del archivo: amplíe la canalización con numfmtel comando GNU (si es compatible):

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

Respuesta2

Con zsh, para el archivo normal más grande:

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

(por supuesto, puede reemplazar ls -ld --con cualquier comando. Si usa GNU lso compatible, consulte también la -hopción paratamaños legibles por humanos)

  • .: soloregulararchivos (no directorios, enlaces simbólicos, dispositivos, fifos...)
  • D: incluye los ocultos y desciende a directorios ocultos
  • OL: ordenado al revés por tamaño ( Length).
  • [1]: sólo el primer partido.

Si hay empates, obtendrás cualquiera de ellos al azar. Si desea el primero en orden alfabético, agregue un extra on( oordenar por nnombre) para ordenar los vínculos alfabéticamente.

información relacionada