¿Es posible usar ls
en Unix para enumerar el tamaño total de un subdirectorio y todo su contenido en lugar de lo habitual 4K
que (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 -rh
es genial (mostrar una salida ordenada) En mac do:brew install coreutils
y luegodu -sch * .[!.]* | gsort -rh
du -sk * | sort -n
clasificará las carpetas por tamaño. Útil cuando se busca espacio libre.fuente
| tail -r
para ordenar primero por mayor.sort -rn
ordena las cosas en orden numérico inverso.sort -rn | head -n 10
mostrará solo los primeros, si eso es de algún interés.sort -rh
funcionará biendu -cksh *
ya que clasifica las unidades legibles por humanos.du -ksh | sort -rn
es lo mismo quedu -cksh | sort -rn
. Igual quedu -ksh
es lo mismo quedu -cksh
.Esto se mostrará en formato legible para humanos.
fuente
sort -h
aquí: gnu.org/software/coreutils/manual/...~~V~~singular~~3rd Es especialmente allí para clasificar103K
,102M
,1.1G
etc. 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 -h
Para enumerar los directorios más grandes del directorio actual en formato legible por humanos:
du -sh * | sort -hr
Una mejor manera de restringir el número de filas puede ser
du -sh * | sort -hr | head -n10
Donde puede aumentar el sufijo de
-n
bandera para restringir el número de filas enumeradasMuestra:
Hace que sea más conveniente leer :)
fuente
Para mostrarlo en
ls -lh
formato, use:Código Awk explicado:
Salida de muestra:
fuente
--color=no
sort --key=5,5h
para clasificar 'unidades legibles por humanos' de la quinta columnasort: stray character in field spec: invalid field specification
5,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é
duls
porque muestra la salida de ambosdu
yls
(en ese orden):Explicación:
La
paste
utilidad 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 -f1
como 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 adu
yls
. Sin esto, decirduls -l
confundiríadu
y cualquier opcióndu
quels
no tenga podría confundirls
(y las opciones que existen en ambas utilidades podrían no significar lo mismo, y sería un desastre).El
cut
afterdu
simplemente corta la primera columna de ladu -hs
salida (los tamaños).Decidí poner el
du
resultado 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
bash
y enksh93
. No funcionará con/bin/sh
.fuente
Siempre uso
du -sk
(-k
marca que muestra el tamaño del archivo en kilobytes) en su lugar.fuente
fuente
ncdu
maldicionesdu
Esta 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
/drivers
carpeta, y veo:ncdu
solo 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.
ncdu
uso no interactivoOtra característica interesante
ncdu
es 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
/var
en ubuntu:sudo du -hDaxd1 /var | sort -h | tail -n10
fuente
Estas son todas excelentes sugerencias, pero la que uso es:
-ksh
se 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 -h
que no lo hace, por ejemplo).fuente
-h
bandera deldu
comando, cortas esa desventaja-h
lugar de-n
en orden también.du tienen otra opción útil:
-S, --separate-dirs
narració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
du
comando 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
rm
comando 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
size
que desea enumerar los directorios, puede usar el modificadorthreshold
(-t
) como en:du
-d
isku
sageh
- 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
-b
indicador aldu
que cuenta el tamaño en bytes y, por lo que puedo determinar, eliminé las diferencias en los dos servidores. Todavía puede usar-s -h
para 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