Per un rapido uso interattivo su alberi di directory che non sono troppo grandi, shopt -s globstar
è davvero bello. Un glob non può filtrare le directory in base al tipo, ma se lo si utilizza con ls -d
allora ls
sarà solo stampare il nome della directory, invece del contenuto.
Supponendo che il tuo ll
alias includa -lh
:
# with shopt -s globstar in your .bashrc
ll -rSd **/*
ti darà un output come questo (dalla mia directory code-golf), ma con l'evidenziazione del colore (quindi è più facile vedere le directory). Si noti che l'ordinamento per dimensione file è avvenuto in tutte le sottodirectory.
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~
...
È possibile filtrare le directory effettuando il piping grep -v '^d'
A volte puoi usare un glob che corrisponde solo ai file e non alle directory, se i tuoi nomi di file hanno uno schema. per esempio ll -rSd **/*.jpg
, o anche **/*.*
funziona se nessuno dei nomi delle directory hanno .
in loro, e tutti i file che si desidera fare .
(Per le persone con un background DOS: non c'è nulla di magico *.*
in Unix. Corrisponde a qualsiasi voce di directory che contiene un punto letterale. Ma a parte i file eseguibili e talvolta i file di testo, è comune dare estensioni ai nomi dei file.)
@dessert sottolinea che è necessario shopt -s dotglob
che corrisponda a tutti i file.
Con GNU find
Se non ci sono troppi file per adattarsi a una ls
riga di comando, find -exec ls {} +
li inserirà tutti nella riga di comando dove ls
possono ordinarli.
find -not -type d -exec ls --color -lrSh {} +
L'utilizzo -not -type d
anziché -type f
evita di ignorare collegamenti simbolici, pipe denominate, socket, file del dispositivo e qualsiasi altra cosa si stia dando in giro nelle directory.
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
Ora i nomi delle directory sono ordinati nell'elenco con la somma totale di tutti i loro contenuti, ma i singoli file sono ancora inclusi.
sort -h
, aka --human-numeric-sort
, ordina i numeri con suffissi di dimensioni come le du -h
stampe. È perfetto per l'uso con du
.
Uso spesso du -sch * | sort -h
o */
per ottenere solo directory.
du -sch **/* | sort -h
ti darebbe l'output sopra, se dimentichi che du
ha -a
un'opzione.
(Mi sono preso solo il tempo di cercarlo perché sto postando una risposta. Per un uso interattivo, probabilmente avrei usato du -sch **/*
.