Para um uso interativo rápido em árvores de diretório que não são muito grandes, shopt -s globstar
é muito bom. Um glob não pode filtrar os diretórios com base no tipo, mas se você usá-lo ls -d
, ls
apenas imprimirá o nome do diretório, em vez do conteúdo.
Supondo que seu ll
alias inclua -lh
:
# with shopt -s globstar in your .bashrc
ll -rSd **/*
fornecerá uma saída assim (do meu diretório code-golf), mas com realce de cores (para que seja mais fácil ver os diretórios). Observe que a classificação por tamanho do arquivo ocorreu entre subdiretórios.
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~
...
Você pode filtrar os diretórios através de grep -v '^d'
Às vezes, você pode usar um globo que corresponda apenas a arquivos e não a diretórios, se os nomes de arquivos tiverem um padrão. por exemplo ll -rSd **/*.jpg
, ou até **/*.*
funciona se nenhum dos nomes de diretório tiver .
neles e todos os arquivos que você deseja fazer .
(Para pessoas com experiência em DOS: não há nada mágico *.*
no Unix. Apenas corresponde a qualquer entrada de diretório que contenha um ponto literal. Mas, além de executáveis e, às vezes, arquivos de texto, é comum dar extensões aos nomes de arquivos.)
O @dessert aponta que você precisaria shopt -s dotglob
para corresponder a todos os arquivos.
Com GNU find
Se não houver muitos arquivos para caber em uma ls
linha de comando, find -exec ls {} +
todos eles serão colocados na linha de comando, onde ls
podem ser classificados.
find -not -type d -exec ls --color -lrSh {} +
Usar em -not -type d
vez de -type f
evitar ignorar links simbólicos, pipes nomeados, soquetes, arquivos de dispositivos e tudo o mais que você tiver em seus diretórios.
Com 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
Agora, os nomes dos diretórios são classificados na lista para somar o total de todo o seu conteúdo, mas os arquivos individuais ainda estão incluídos.
sort -h
, também conhecido como --human-numeric-sort
, classifica números com sufixos de tamanho, como du -h
impressões. É perfeito para uso com du
.
Costumo usar du -sch * | sort -h
ou */
obter apenas diretórios.
du -sch **/* | sort -h
daria a você a saída acima, se você esquecer que du
tem uma -a
opção.
(Levei apenas um tempo para procurá-lo porque estou postando uma resposta. Para uso interativo, provavelmente eu teria usado du -sch **/*
.