¿Es posible usar lsen Unix para enumerar el tamaño total de un subdirectorio y todo su contenido en lugar de lo habitual 4Kque (supongo) es solo el archivo de directorio en sí?
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
Después de buscar en las páginas del manual, estoy vacío.

alias ducks='du -cksh * | sort -hr | head -n 15'Respuestas:
Intenta algo como:
versión corta de:
Explicación:
du: D isk U sage-s: Muestra un resumen para cada archivo especificado. (Equivalente a-d 0)-h: Salida "legible para humanos". Utilice sufijos de unidad: B yte, K ibibyte (KiB), M ebibyte (MiB), G ibibyte (GiB), T ebibyte (TiB) y P ebibyte (PiB). (BASE2)fuente
*(D)para unir archivos ocultos ( d ot) junto con archivos normales. Cuando use bash, puede usar* .[!.]*para unir ambos.du -sch * .[!.]* | sort -rhes genial (mostrar una salida ordenada) En mac do:brew install coreutilsy luegodu -sch * .[!.]* | gsort -rhdu -sk * | sort -nclasificará las carpetas por tamaño. Útil cuando se busca espacio libre.fuente
| tail -rpara ordenar primero por mayor.sort -rnordena las cosas en orden numérico inverso.sort -rn | head -n 10mostrará solo los primeros, si eso es de algún interés.sort -rhfuncionará biendu -cksh *ya que clasifica las unidades legibles por humanos.du -ksh | sort -rnes lo mismo quedu -cksh | sort -rn. Igual quedu -kshes lo mismo quedu -cksh.Esto se mostrará en formato legible para humanos.
fuente
sort -haquí: gnu.org/software/coreutils/manual/...~~V~~singular~~3rd Es especialmente allí para clasificar103K,102M,1.1Getc. Esto debe estar disponible en una gran cantidad de sistemas de hoy en día, pero no todos.du -sh * | sort -rh(-r para listar carpetas más grandes primero)du -sh $(ls -A) | sort -hPara enumerar los directorios más grandes del directorio actual en formato legible por humanos:
du -sh * | sort -hrUna mejor manera de restringir el número de filas puede ser
du -sh * | sort -hr | head -n10Donde puede aumentar el sufijo de
-nbandera para restringir el número de filas enumeradasMuestra:
Hace que sea más conveniente leer :)
fuente
Para mostrarlo en
ls -lhformato, use:Código Awk explicado:
Salida de muestra:
fuente
--color=nosort --key=5,5hpara clasificar 'unidades legibles por humanos' de la quinta columnasort: stray character in field spec: invalid field specification5,5h ''. Realmente odio las Mac a veces = \El comando que desea es 'du -sk' du = "uso del disco"
El indicador -k le da salida en kilobytes, en lugar del du predeterminado de los sectores del disco (bloques de 512 bytes).
El indicador -s solo enumerará cosas en el directorio de nivel superior (es decir, el directorio actual, por defecto, o el directorio especificado en la línea de comando). Es extraño que du tenga el comportamiento opuesto de ls a este respecto. Por defecto, du le dará recursivamente el uso del disco de cada subdirectorio. Por el contrario, ls solo proporcionará archivos de lista en el directorio especificado. (ls -R te da un comportamiento recursivo).
fuente
Ponga esta declaración de función de shell en sus scripts de inicialización de shell:
Lo llamé
dulsporque muestra la salida de ambosduyls(en ese orden):Explicación:
La
pasteutilidad crea columnas a partir de su entrada de acuerdo con la especificación que le proporcione. Dados dos archivos de entrada, los pone uno al lado del otro, con una pestaña como separador.Le damos la salida de
du -hs -- "$@" | cut -f1como el primer archivo (flujo de entrada realmente) y la salida dels -ld -- "$@"como el segundo archivo.En la función,
"$@"evaluará la lista de todos los argumentos de la línea de comandos, cada uno entre comillas dobles. Por lo tanto, comprenderá los caracteres globales y los nombres de ruta con espacios, etc.Las dobles desventajas (
--) señalan el final de las opciones de línea de comando aduyls. Sin esto, decirduls -lconfundiríaduy cualquier opciónduquelsno tenga podría confundirls(y las opciones que existen en ambas utilidades podrían no significar lo mismo, y sería un desastre).El
cutafterdusimplemente corta la primera columna de ladu -hssalida (los tamaños).Decidí poner el
duresultado a la izquierda, de lo contrario habría tenido que administrar una columna tambaleante a la derecha (debido a las diferentes longitudes de los nombres de archivo).El comando no aceptará banderas de línea de comando.
Esto ha sido probado en ambos
bashy enksh93. No funcionará con/bin/sh.fuente
Siempre uso
du -sk(-kmarca que muestra el tamaño del archivo en kilobytes) en su lugar.fuente
fuente
ncdumaldicionesduEsta increíble utilidad CLI le permite encontrar fácilmente los archivos y directorios grandes de forma interactiva.
Por ejemplo, desde el interior del árbol de un proyecto bien conocido hacemos:
El resultado es:
Luego, entro hacia abajo y hacia la derecha en mi teclado para ir a la
/driverscarpeta, y veo:ncdusolo calcula los tamaños de archivo de forma recursiva una vez al inicio para todo el árbol, por lo que es eficiente."Uso total del disco" versus "Tamaño aparente" es análogo a
du, y lo he explicado en: ¿por qué la salida de `du` a menudo es tan diferente de` du -b`Página de inicio del proyecto: https://dev.yorhel.nl/ncdu
Preguntas relacionadas:
Probado en Ubuntu 16.04.
ncduuso no interactivoOtra característica interesante
ncdues que primero puede volcar los tamaños en un formato JSON y luego reutilizarlos.Por ejemplo, para generar el archivo ejecutado:
y luego examínelo interactivamente con:
Esto es muy útil si se trata de un sistema de archivos muy grande y lento como NFS.
De esta forma, primero puede exportar solo una vez, lo que puede llevar horas, y luego explorar los archivos, salir, explorar nuevamente, etc.
El formato de salida es solo JSON, por lo que también es fácil reutilizarlo con otros programas, por ejemplo:
revela una estructura de datos de árbol de directorio simple:
Probado en Ubuntu 18.04.
fuente
du -sch * en el mismo directorio.
fuente
Este es uno que me gusta
actualización : no me gustó el anterior porque no mostraba archivos en el directorio actual, solo enumeraba directorios.
Ejemplo de salida para
/varen ubuntu:sudo du -hDaxd1 /var | sort -h | tail -n10fuente
Estas son todas excelentes sugerencias, pero la que uso es:
-kshse asegura de que los archivos y las carpetas se enumeren en un formato legible por humanos y en megabytes, kilobytes, etc. Luego, los ordena numéricamente y revierte el orden para que los primeros sean los más grandes.El único inconveniente de este comando es que la computadora no sabe que Gigabyte es más grande que Megabyte, por lo que solo ordenará por números y a menudo encontrará listados como este:
Solo tenga cuidado de mirar la unidad.
Este comando también funciona en Mac (mientras
sort -hque no lo hace, por ejemplo).fuente
-hbandera delducomando, cortas esa desventaja-hlugar de-nen orden también.du tienen otra opción útil:
-S, --separate-dirsnarración du no incluye el tamaño de subdirectorios - práctico en algunas ocasiones.Ejemplo 1: muestra solo los tamaños de archivo en un directorio:
Ejemplo 2: muestra los tamaños de archivo y subdirectorios en el directorio:
fuente
du -sm * | sort -nr
Salida por tamaño
fuente
mira el
ducomando para esofuente
solo una advertencia, si desea comparar tamaños de archivos. du produce diferentes resultados dependiendo del sistema de archivos, tamaño de bloque, ....
Puede suceder que el tamaño de los archivos sea diferente, por ejemplo, comparando el mismo directorio en su disco duro local y un dispositivo de almacenamiento masivo USB. Utilizo el siguiente script, incluido ls para resumir el tamaño del directorio. El resultado es en bytes teniendo en cuenta todos los subdirectorios.
fuente
Para visualizar los archivos del directorio actual y los tamaños de subdirectorios de forma recursiva:
Para mostrar la misma información de tamaño pero sin imprimir sus subdirectorios de forma recursiva (que puede ser una lista enorme), solo use la opción --max-depth :
fuente
Durante un tiempo, usé Nautilus (en el escritorio de Gnome en RHEL 6.0) para eliminar archivos en mi carpeta de inicio en lugar de usar el
rmcomando en bash. Como resultado, el tamaño total mostrado porno coincidía con la suma del uso del disco de cada subdirectorio, cuando usé
Me tomó un tiempo darme cuenta de que Nautilus envía los archivos eliminados a su carpeta Papelera, y esa carpeta no aparece en el
du -sh *comando. Entonces, solo quería compartir esto, en caso de que alguien enfrentara el mismo problema.fuente
Hmm, la mejor manera es usar este comando:
Entonces podrá obtener carpetas de todos los tamaños en todo su servidor. Fácil de ayudarlo a encontrar los tamaños más grandes.
fuente
Lo siguiente es fácil de recordar
https://explainshell.com/explain?cmd=ls+-ltrapR
fuente
Si desea más control sobre el
sizeque desea enumerar los directorios, puede usar el modificadorthreshold(-t) como en:du-diskusageh- formato legible por humanost- tamaño del umbralAquí, queremos enumerar todos los directorios que tengan un tamaño superior a 1 GB.
Explicacion :
Las unidades que se describen en la wiki son las siguientes:
fuente
Me encontré con un problema similar al descrito por Martin Wilde, en mi caso comparando el mismo directorio en dos servidores diferentes después de duplicar con rsync.
En lugar de usar un script, agregué el
-bindicador alduque cuenta el tamaño en bytes y, por lo que puedo determinar, eliminé las diferencias en los dos servidores. Todavía puede usar-s -hpara obtener una salida comprensible.fuente
colóquelo en el script de inicio como .bashrc ... ajuste def según sea necesario.
fuente
escriba "ls -ltrh / path_to_directory"
fuente