Como contar o número de arquivos e diretórios recursivamente em um determinado diretório

2

Eu posso encontrar o número de arquivos recursivamente em um determinado diretório

find . -type f | wc -l

Eu posso encontrar o número de diretórios recursivamente em um determinado diretório

find . -type d | wc -l

Mas o que eu quero um único comando que mostra o número de arquivos e diretórios de forma recursiva em um determinado diretório no mesmo tempo.

A saída seria algo como

6 directories, 14 files
    
por Maythux 21.05.2015 / 10:17

2 respostas

3

Use tree :

$ tree foo
foo
├── bar
│   ├── baz
│   └── foo3
└── foo2

2 directories, 2 files

Ou você pode combinar find e awk :

find foo -type d -printf "d\n" -o -type f -printf "f\n" | awk '/f/{f++}/d/{d++}END{printf "%d directories, %d files\n", d, f}'

Ou generalizando:

find foo -printf "%y\n" | awk '/f/{f++}/d/{d++}END{printf "%d directories, %d files\n", d, f}'

Se você não se importa com uma saída concisa:

find foo -printf "%y\n" | sort | uniq -c

Isso contará mais um diretório do que tree - o diretório inicial não é contado na saída de tree .

    
por muru 21.05.2015 / 10:22
0

Você pode fazer como abaixo:

d=$(find . -type d | wc -l)
f=$(find . -type f | wc -l)
echo "There are $d directories and $f files"

No meu caso, a saída é There are 459 directories and 2352 files

HTH

    
por Tolga Ozses 21.05.2015 / 10:25