Por que não 'encontrar' podar da maneira que eu acho que deveria?

2

Estou executando o MacOSX 10.5.8

Eu corro o seguinte:

~/Sites/jjprof/trunk/content > find . -type d -name '*svn' -prune
./.svn
./resources/.svn
./resources/sitewide/.svn
./temporary/.svn
./users/.svn
./users/avatars/.svn

Eu esperaria que este comando ignore todos os subdiretórios .svn; em vez disso, exibe-os.

find . -name '*svn' -prune 

faz a mesma coisa.

    
por Avery Chan 04.11.2010 / 12:56

2 respostas

5

Tente isto:

find -type d -path '.svn' -prune -o -print

Em man find na seção sobre -name :

To ignore a directory and the files under it, use -prune; see an example in the description of
-path.

Na seção sobre -path :

To ignore a whole directory tree, use -prune rather than checking every file in the tree. For example, to skip the directory src/emacs and all files and directories under it, and print the names of the other files found, do something like this:

             find . -path ./src/emacs -prune -o -print

Na seção "Exemplos":

However, the -prune action itself returns true, so the following -o ensures that the right hand side is evaluated only for those directories which didn't get pruned (the contents of the pruned directories are not even visited, so their contents are irrelevant).

    
por 04.11.2010 / 16:31
2

encontrar estados manuais que remove "ignora o caminho anterior ...", então o comando deve ser

find . -prune -type d -name '*svn'

Isso porque você pode ter algo como

find -path . -name '*svn' -o -path './notimportantdir' -prune

que encontra '* svn' no caminho atual exceto aqueles sob notimportantdir

    
por 04.11.2010 / 13:07

Tags