
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
+head
solució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 archivosort -nr
- ordenar registros numéricamente en orden inversohead -1
- imprimir la primera línea/registro SUPERIOR
Conseguir unlegible por humanosvalor del tamaño del archivo: amplíe la canalización con numfmt
el 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 ls
o compatible, consulte también la -h
opción paratamaños legibles por humanos)
.
: soloregulararchivos (no directorios, enlaces simbólicos, dispositivos, fifos...)D
: incluye los ocultos y desciende a directorios ocultosOL
: ordenado al revés por tamaño (L
ength).[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
( o
ordenar por n
nombre) para ordenar los vínculos alfabéticamente.