Como posso restringir a localização para procurar apenas subdiretórios específicos?

1

Estou usando encontro em um Bash script. Como posso modificar esse código para incluir um diretório específico em 'bin', ou seja, './bin/php/' (enquanto ainda está ignorando todos os outros subdiretórios de 'bin')?

Código atual:

find . -name '*.php' \
-and ! -path './bin/*' \
    
por yoavf 09.12.2009 / 10:14

4 respostas

1

É isso que você quer dizer?

find . \( \! -iregex ^./bin/.\* -o -iregex ^./include/something/.\* \) \
    -name \*.php
    
por 09.12.2009 / 10:15
2
find /bin /bin/php -maxdepth 1 -name "*.php"

Prova de conceito

$ tree /bin
/bin
|-- ash
|-- dont_search
|   |-- hide_me.php
|   '-- hide_me.txt
|-- du
|-- file.php
|-- fmt
|-- php
|   |-- hide_me.txt
|   '-- show_me.php
'-- zsh

2 directories, 184 files

Resultado

$ find /bin /bin/php -maxdepth 1 -name "*.php"
/bin/file.php
/bin/php/show_me.php

Observe que /bin/dont_search/hide_me.php não correspondeu

    
por 09.12.2009 / 11:50
1

Encontrar GNU

find . -name "*.txt" ! -iregex ".*/bin/.*"
    
por 09.12.2009 / 10:30
1

Tente isto:

find . ./bin/php -path ./bin -prune -o -print

Isso também irá ignorar arquivos que estão dentro de ./bin.

A propósito, é "encontrar" em vez de "encontrar Bash".

    
por 09.12.2009 / 13:13

Tags