linux: quantos arquivos no diretório? [fechadas]

0

Eu quero uma saída semelhante a esta, para mostrar quantos arquivos e, eventualmente, subdiretórios estão contidos nos diretórios. A saída pode ser semelhante a esta

dir1 100
dir2/dir3 240
dir3 12
dir5 44
...

Qual aplicativo, script pode fazer isso?

    
por elbarna 28.01.2018 / 00:00

3 respostas

1

Se você tiver o GNU find, você pode fazer:

find /path/to/directory -type f -printf "%h\n" | uniq -c

Por exemplo:

$ find /etc/skel /etc/profile.d /etc/resolvconf -type f -printf "%h\n" | uniq -c 
     10 /etc/profile.d
      1 /etc/resolvconf
      2 /etc/resolvconf/resolv.conf.d
      1 /etc/resolvconf/update.d
      1 /etc/resolvconf/update-libc.d
      6 /etc/skel

%h imprime o nome do diretório do arquivo correspondente, então, depois disso, é uma simples questão de fazer com que uniq conte o número de vezes que o nome da pasta foi duplicado.

    
por 28.01.2018 / 08:08
1

Encontrou uma solução

du -a | cut -d/ -f2 | sort | uniq -c | sort -nr

A partir deste site

A saída é

 31 dir2
  2 dir3
  1 dir4    
    
por 28.01.2018 / 00:02
1

Isso contará arquivos em diretórios para você começando em . . Você pode fornecer um caminho inicial para o primeiro find , se desejar:

find -type d -exec bash -c 'printf "%s %d\n" "{}" $(find "{}" -maxdepth 1 -type f | wc -l)' \;

Funciona descendendo a árvore de diretórios (de . ou de um caminho explícito que você pode fornecer) e chamando o fragmento bash -c '...' para cada um. Este snippet imprime o nome do caminho do diretório e o número de arquivos que ele contém.

Veja o exemplo de saída de /etc

/etc 27
/etc/alternatives 1
/etc/bash_completion.d 6
/etc/dbus-1 2
/etc/defaults 0
/etc/defaults/etc 16
/etc/defaults/etc/freetds 3
/etc/defaults/etc/inetd.d 1
/etc/defaults/etc/my.cnf.d 4
/etc/defaults/etc/pki 0
/etc/defaults/etc/pki/ca-trust 1
/etc/defaults/etc/profile.d 5
...
    
por 28.01.2018 / 00:55

Tags