Como encontrar o recurso em subdiretórios ao usar a opção -prune

3

Vejo que o comando find não desce em subdiretórios quando você está usando a opção -prune . Como eu digo ao find para recursar nos sub-diretórios, mas também ignorar algumas coisas?

Especificamente, desejo pesquisar o diretório /var/lib/foo , mas excluir diretórios com o nome .snapshot/ .

sudo find /var/lib/foo -prune -name '.snapshot'

Com o acima, ele ignora corretamente .snapshot, mas não entra nos subdiretórios. FYI, estou trabalhando no bash em um host do CentOS 6.3.

    
por Banjer 16.01.2013 / 16:56

1 resposta

3

Você precisa fazer:

sudo find /var/lib/foo -name '.snapshot' -prune -o -print

ele irá imprimir o que não for chamado ".snapshot", e se ".snapshot" for um diretório, ele também não irá descer para ele.

por quê? porque "-prune" é uma ação (como "-print" também é outra ação), não fazendo nada, exceto evitando ir mais abaixo no subdiretório. E sempre retorna "true", então aqui, (-name ... -prune) é verdadeiro se e somente se o arquivo ou diretório é chamado "...", e você quer tudo mais, daí o -o ( -print).

    
por 16.01.2013 / 17:12