ver una tamaño subdirectorios solo que por para listar letra empiecen directorios comando carpetas archivos linux unix

una - listar solo directorios linux



Usando ls para listar directorios y sus tamaños totales (22)

¿Es posible usar ls en Unix para enumerar el tamaño total de un subdirectorio y todo su contenido en oposición a los 4K habituales que (supongo) es solo el archivo del directorio en sí? ES DECIR

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 recorrer las páginas del manual, voy subiendo vacío.


El comando que desea es ''du -sk'' du = "uso de disco"

El indicador -k le da salida en kilobytes, en lugar del valor predeterminado de los sectores del disco (bloques de 512 bytes).

La marca -s solo mostrará una lista de las cosas en el directorio de nivel superior (es decir, el directorio actual, por defecto, o el directorio especificado en la línea de comandos). Es extraño que du tenga el comportamiento opuesto de ls en este sentido. Por defecto, du le dará recursivamente el uso del disco de cada subdirectorio. En contraste, ls solo proporcionará archivos de lista en el directorio especificado. (ls -R te da un comportamiento recursivo.)


Estas son todas buenas sugerencias, pero la que yo uso es:

du -ksh * | sort -n -r

-ksh se asegura de que los archivos y las carpetas se enumeren en un formato legible para las personas y en megabytes, kilobytes, etc. Luego, los clasifica numéricamente e invierte la ordenación para que coloque primero 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 se ordenará por números y, a menudo, encontrará listados como este:

120K 12M 4G

Sólo tenga cuidado de mirar la unidad.

Este comando también funciona en Mac (mientras que sort -h no lo hace, por ejemplo).


Este es uno que me gusta

actualización : no me gustó la anterior porque no mostraba archivos en el directorio actual, solo listaba directorios.

Ejemplo de salida para /var en ubuntu:

sudo du -hDaxd1 /var | sort -h | tail -n10

4.0K /var/lock 4.0K /var/run 4.0K /var/www 12K /var/spool 3.7M /var/backups 33M /var/log 45M /var/webmin 231M /var/cache 1.4G /var/lib 1.7G /var


Hmm, la mejor manera es usar este comando:

du -h -x / | sort -hr >> /home/log_size.txt

Entonces podrá obtener carpetas de todos los tamaños en todo su servidor. Fácil de ayudarte a encontrar los tamaños más grandes.


Intenta algo como:

du -sh *

versión corta de:

du --summary --human-readable *

Explicación:

du : D isk U sage

-s : muestra un resumen para cada archivo especificado. (Equivalente a -d 0 )

-h : Salida "legible por humanos". Utilice los sufijos unitarios: B yte, K ibibyte (KiB), M ebibyte (MiB), G ibibyte (GiB), T ebibyte (TiB) y P ebibyte (PiB). (BASE2)


Lo siguiente es fácil de recordar

ls -ltrapR

listar los contenidos del directorio

-Utilizo un formato de listado largo

-tipo por tiempo de modificación, el más nuevo primero

-r, --verso inverso al ordenar

-a, --todos no ignoran las entradas que comienzan con.

-p, --indicator-style = barra agregada / indicador a directorios

-R, - lista de recursivos subdirectorios recursivamente

https://explainshell.com/explain?cmd=ls+-ltrapR


Me encontré con un problema similar al que describió 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 indicador -b al du que cuenta el tamaño en bytes y, hasta donde puedo determinar, eliminó las diferencias en los dos servidores. Aún puede usar -s -h para obtener un resultado comprensible.


Para listar 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 la bandera -n para restringir el número de filas enumeradas

Muestra:

[~]$ du -sh * | sort -hr 48M app 11M lib 6.7M Vendor 1.1M composer.phar 488K phpcs.phar 488K phpcbf.phar 72K doc 16K nbproject 8.0K composer.lock 4.0K README.md

Lo hace más conveniente para leer :)


Para mostrar recursivamente los archivos y subdirectorios del directorio actual:

du -h .

Para mostrar la misma información de tamaño pero sin imprimir sus subdirectorios de forma recursiva (lo que puede ser una lista enorme), solo use la opción --max-depth :

du -h --max-depth=1 .


Para mostrarlo en formato ls -lh , use:

(du -sh ./*; ls -lh --color=no) | awk ''{ if($1 == "total") {X = 1} else if (!X) {SIZES[$2] = $1} else { sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0); print $0} }''

Código Awk explicado:

if($1 == "total") { // Set X when start of ls is detected X = 1 } else if (!X) { // Until X is set, collect the sizes from `du` SIZES[$2] = $1 } else { // Replace the size on current current line (with alignment) sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0); print $0 }

Salida de muestra:

drwxr-xr-x 2 root root 4.0K Feb 12 16:43 cgi-bin drwxrws--- 6 root www 20M Feb 18 11:07 document_root drwxr-xr-x 3 root root 1.3M Feb 18 00:18 icons drwxrwsr-x 2 localusr www 8.0K Dec 27 01:23 passwd


Ponga esta declaración de función de shell en sus scripts de inicialización de shell:

function duls { paste <( du -hs -- "$@" | cut -f1 ) <( ls -ld -- "$@" ) }

Lo llamé duls porque muestra la salida de ambos du y ls (en ese orden):

$ duls 210M drwxr-xr-x 21 kk staff 714 Jun 15 09:32 . $ duls * 36K -rw-r--r-- 1 kk staff 35147 Jun 9 16:03 COPYING 8.0K -rw-r--r-- 1 kk staff 6962 Jun 9 16:03 INSTALL 28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile 4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am 24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in 4.0K -rw-r--r-- 1 kk staff 1689 Jun 9 16:03 README 120K -rw-r--r-- 1 kk staff 121585 Jun 10 13:26 aclocal.m4 684K drwxr-xr-x 7 kk staff 238 Jun 10 13:26 autom4te.cache 128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build 60K -rw-r--r-- 1 kk staff 60083 Jun 10 13:26 config.log 36K -rwxr-xr-x 1 kk staff 34716 Jun 10 13:26 config.status 264K -rwxr-xr-x 1 kk staff 266637 Jun 10 13:26 configure 8.0K -rw-r--r-- 1 kk staff 4280 Jun 10 13:25 configure.ac 7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc 2.3M drwxr-xr-x 28 kk staff 952 Jun 10 13:26 examples 6.2M -rw-r--r-- 1 kk staff 6505797 Jun 15 09:32 mrbayes-3.2.7-dev.tar.gz 11M drwxr-xr-x 42 kk staff 1428 Jun 10 13:26 src $ duls doc 7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc $ duls [bM]* 28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile 4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am 24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in 128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build

Explicación:

La utilidad de paste crea columnas a partir de su entrada de acuerdo con la especificación que le asigne. Dados dos archivos de entrada, los coloca uno al lado del otro, con una pestaña como separador.

Le damos la salida de du -hs -- "$@" | cut -f1 du -hs -- "$@" | cut -f1 como el primer archivo (flujo de entrada realmente) y la salida de ls -ld -- "$@" como el segundo archivo.

En la función, "$@" se evaluará en 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.

El doble menos ( -- ) señala las opciones de fin de línea de comando para du y ls . Sin esto, decir duls -l confundiría du y cualquier opción para du que ls no tenga confundiría a ls (y las opciones que existen en ambas utilidades podrían no significar lo mismo, y sería un gran lío).

El cut después de du simplemente corta la primera columna de la salida du -hs (los tamaños).

Decidí poner la salida du a la izquierda, de lo contrario habría tenido que administrar una columna derecha tambaleante (debido a la longitud variable de los nombres de los archivos).

El comando no aceptará banderas de línea de comando.

Esto ha sido probado tanto en bash como en ksh93 . No funcionará con /bin/sh .


Por 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 comando rm en bash. Como resultado, el tamaño total mostrado por

du -sh

no coincidía con la suma de uso de disco de cada subdirectorio, cuando lo usé

du -sh *

Me tomó un tiempo darme cuenta de que Nautilus envía los archivos eliminados a su carpeta de la Papelera, y esa carpeta no aparece en el comando du -sh * . Entonces, solo quería compartir esto, en caso de que alguien enfrentara el mismo problema.


Siempre utilizo du -sk ( du -sk -k que muestra el tamaño del archivo en kilobytes) en su lugar.


Solo una advertencia, si quieres 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 en bytes teniendo en cuenta todos los subdirectorios.

echo "[GetFileSize.sh] target directory: /"$1/"" iRetValue=0 uiLength=$(expr length "$1") if [ $uiLength -lt 2 ]; then echo "[GetFileSize.sh] invalid target directory: /"$1/" - exiting!" iRetValue=-1 else echo "[GetFileSize.sh] computing size of files..." # use ls to compute total size of all files - skip directories as they may # show different sizes, depending on block size of target disk / file system uiTotalSize=$(ls -l -R $1 | grep -v ^d | awk ''{total+=$5;} END {print total;}'') uiLength=$(expr length "$uiTotalSize") if [ $uiLength -lt 1 ]; then uiTotalSize=0 fi echo -e "[GetFileSize.sh] total target file size: /"$uiTotalSize/"" fi exit "$iRetValue"


du -sch * en el mismo directorio.


du -sm * | ordenar -nr

Salida por tamaño


escriba "ls -ltrh / path_to_directory"


mira du comando para eso


du -sk * | sort -n du -sk * | sort -n ordenará las carpetas por tamaño. Útil para mirar al espacio libre.


du -S

Tengo otra opción útil: -S, --separate-dirs diciéndole que no incluya el tamaño de los subdirectorios - útil en algunas ocasiones.

Ejemplo 1: muestra solo los tamaños de archivo en un directorio:

du -Sh * 3,1G 10/CR2 280M 10

Ejemplo 2: muestra los tamaños de archivo y los subdirectorios en el directorio:

du -h * 3,1G 10/CR2 3,4G 10


du -h --max-depth=1 . | sort -n -r


du -sh * | sort -h

Esto se mostrará en formato legible por humanos.