Problemas excluindo diretórios em um achado do Linux

1

Tentar excluir um conjunto de diretórios de um achado está me enlouquecendo! O que eu quero fazer é procurar por todos os arquivos .java em uma árvore de diretórios, mas ignorar todos os diretórios de teste. Então, eu tentei:

find . -name "*.java" -not -path "test"

e

find . -name "*.java" -path "test" -prune

e várias variações dos mesmos. No entanto - dependendo da variação - ou eu obtenho todos os arquivos java (incluindo aqueles nos diretórios de teste), ou nenhum deles. Eu olhei para outras questões aqui no SU (por exemplo, este aqui e este ), mas ou eles don ' t resolver minha situação, ou estou perdendo alguma coisa.

Estou usando o gnu find 4.2.27 (fwiw, no centos 5.5 w / gnu bash 3.2.25).

Edit: Desculpe, eu deveria ter especificado originalmente que eu preciso fazer um

-exec grep blah {} \;

então, percorrer o grep -v não funcionará para mim nessa situação.

    
por GreenMatt 08.11.2010 / 21:44

2 respostas

3

Isso deve funcionar:

find -path '*/test/*' -prune -o -name '*.java' -exec grep blah {} \;
    
por 08.11.2010 / 22:59
0

Consolidando as dicas mencionadas acima, isso procura arquivos PHP de forma recursiva, mas exclui vários diretórios e, em seguida, os compacta.

find -name locallibs -prune -o -name libs -prune -o -name wiki -prune -o -name tmp -prune -o -name '*.php' -exec zip all.zip {} \;

    
por 16.12.2011 / 17:05

Tags