Como obter lista de arquivos que não correspondem a padrões no bash?

3

Eu tenho um arquivo com padrões de caractere joker:

./include/*

./src/*

etc.

No diretório atual, gostaria de obter recursivamente a lista de arquivos que não correspondem a esses padrões .

    
por Tamás Szelei 04.05.2011 / 22:50

2 respostas

6
find . -type f \! \( -path '*/include/*' -o -path '*/src/*' \)

Divisão:

  • \! está negando o grupo
  • \( ... \) é como fazer grupos de condições para find
  • -o condições ORs
  • Todo o resto deve ser autoexplicativo.

Se você tiver uma nova versão suficiente de find , poderá aprimorá-la com:

find . -type f -regextype posix-egrep -regex \! -path '.*/(include|src)/.*'
    
por 04.05.2011 / 23:25
0

Primeira abordagem, mas não usando uma lista de arquivos, outros se sentem à vontade para melhorar:

find . -type f -print | grep -v '.\/src\/*'
    
por 04.05.2011 / 23:08