Para un uso interactivo rápido en árboles de directorios que no son demasiado grandes, shopt -s globstar
es realmente agradable. Un pegote no puede filtrar los directorios basados en el tipo, pero si se utiliza con ls -d
continuación, ls
se acaba de imprimir el nombre del directorio, en lugar de los contenidos.
Asumiendo que tu ll
alias incluye -lh
:
# with shopt -s globstar in your .bashrc
ll -rSd **/*
le dará una salida como esta (desde mi directorio de código de golf), pero con resaltado de color (por lo que es más fácil ver los directorios). Tenga en cuenta que la ordenación por tamaño de archivo se realizó entre subdirectorios.
drwxr-xr-x 1 peter peter 70 Jun 8 07:56 casexchg
...
drwxr-xr-x 1 peter peter 342 Mar 13 18:47 parity-party
-rw-r--r-- 1 peter peter 387 Jul 29 2017 likely.cpp
-rw-r--r-- 1 peter peter 416 Aug 31 2017 true-binary.asm~
-rw-r--r-- 1 peter peter 447 Feb 23 20:14 weight-of-zero.asm
...
-rw-r--r-- 1 peter peter 6.4K Jun 1 2017 string-exponential.asm
-rwxr-xr-x 1 peter peter 6.7K Aug 31 2017 true-binary
-rwxr-xr-x 1 peter peter 6.8K Sep 17 2017 dizzy-integer
-rw-r--r-- 1 peter peter 7.5K Jul 24 2017 fibonacci/fibonacci-1G.v3-working-32b-stack-except-output.asm
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G~
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G
-rwxr-xr-x 1 peter peter 8.4K May 19 04:29 a.out
-rw-r--r-- 1 peter peter 8.9K Jul 25 2017 fibonacci/perf.python-xnor-2n
-rw-r--r-- 1 peter peter 9.5K Jul 26 2017 fibonacci/fibonacci-1G-performance.asm
-rwxr-xr-x 1 peter peter 9.6K Apr 12 23:25 empty-args
-rw-r--r-- 1 peter peter 9.7K Dec 18 17:00 bubblesort.asm
-rwxr-xr-x 1 peter peter 9.9K Feb 6 23:34 parity-party/a.out
-rw-r--r-- 1 peter peter 9.9K Jul 25 2017 fibonacci/fibonacci-1G-performance.asm~
...
Puede filtrar los directorios canalizando grep -v '^d'
A veces puede usar un globo que solo coincida con archivos y no con directorios, si sus nombres de archivo tienen un patrón. por ejemplo ll -rSd **/*.jpg
, o incluso **/*.*
funciona si ninguno de los nombres de su directorio tiene .
en ellos, y todos los archivos que desea hacer .
(Para personas con experiencia en DOS: no hay nada mágico *.*
en Unix. Simplemente coincide con cualquier entrada de directorio que contenga un punto literal. Pero aparte de los archivos ejecutables y, a veces, los archivos de texto, es común dar extensiones a los nombres de archivo).
@dessert señala que necesitaría shopt -s dotglob
que coincida con todos los archivos.
Con GNU find
Si no hay demasiados archivos para caber en una ls
línea de comando, los find -exec ls {} +
colocará todos en la línea de comando donde ls
puede ordenarlos.
find -not -type d -exec ls --color -lrSh {} +
Usar en -not -type d
lugar de -type f
evitar ignorar enlaces simbólicos, canalizaciones con nombre, tomas, archivos de dispositivos y cualquier otra cosa que tenga en sus directorios.
Con du
:
du -ach | sort -h
....
4.0K x86-modedetect-polyglot.o
8.0K ascii-compress-base.asm
8.0K dizzy-integer
8.0K stopwatch-rdtsc.asm
8.0K string-exponential.asm
8.0K true-binary
12K a.out
12K bubblesort.asm
12K casexchg
12K empty-args
100K parity-party
220K fibonacci
628K total
Ahora los nombres de los directorios se ordenan en la lista con la suma total de todos sus contenidos, pero los archivos individuales aún se incluyen.
sort -h
, también conocido como --human-numeric-sort
, ordena números con sufijos de tamaño como du -h
impresiones. Es perfecto para usar con du
.
A menudo uso du -sch * | sort -h
, o */
para obtener solo directorios.
du -sch **/* | sort -h
le daría el resultado anterior, si olvida que du
tiene una -a
opción.
(Solo me tomé el tiempo de buscarlo porque estoy publicando una respuesta. Para uso interactivo, probablemente lo hubiera usado du -sch **/*
.