Como obtenho uma contagem de arquivos em um diretório (recursivamente) mas excluo diretórios com um certo nome

1

Isso é muito semelhante a esta pergunta, mas eu preciso ir um pouco mais longe. Eu estou usando uma unidade de sincronização e há toneladas de @eaDir diretórios que eu quero ignorar (e os arquivos nesses diretórios). Como posso fazer isso?

Aqui está um comando recursivo que funciona muito bem com arquivos ocultos (que eu quero) ... mas como altero isso para excluir nomes de diretórios @eaDir ?

find .//. ! -name . -print | grep -c //
    
por Arthur Frankel 24.04.2016 / 17:11

1 resposta

2

Se você não quiser descer em nenhum dos diretórios denominados @eaDir , não use ! antes de -name :

 mkdir -p a/@eaDir
 mkdir -p b/c/@eaDir
 mkdir -p d/e/f
 touch a/@eaDir/xxx
 touch b/yyy
 touch b/c/@eaDir/xxx
 touch d/e/f/yyy
 find . -name '@eaDir' -prune -o -print

vai te dar:

.
./b
./b/yyy
./b/c
./a
./d
./d/e
./d/e/f
./d/e/f/yyy

e

find .//. -name '@eaDir' -prune -o -print | grep -c // 

lhe dará: 9

Se o nome corresponder a -name '@eaDir' , o restante da árvore abaixo será ignorado ('-prune'), caso contrário, o nome será impresso ( -o -print )

    
por 24.04.2016 / 18:36

Tags