pós-encomenda para encontrar -exec?

0

Eu quero remover certos diretórios de uma hiearchy usando 'find -exec'

find $rootdir -type d -name target -exec rm -rf {} \;

Eu recebo mensagens de erro

find: 'foo/bar/target': No such file or directory

porque 'find -exec' aparentemente funciona em pré-encomenda, ou seja, faz o trabalho primeiro e depois visita as crianças. Eu não quero simplesmente redirecionar as mensagens de erro para / dev / null, porque elas podem ser significativas. Alguma sugestão?

    
por Max Spring 12.02.2014 / 23:51

1 resposta

2

Você está procurando a opção -d ou -depth

 -depth  Always true; same as the -d option.

 -d      Cause find to perform a depth-first traversal, i.e., directories
         are visited in post-order and all entries in a directory will be
         acted on before the directory itself.  By default, find visits
         directories in pre-order, i.e., before their contents.  Note, the
         default is not a breadth-first traversal.

Tenha cuidado com -depth , se você adicionar um número, isso mudará o significado.

    
por 12.02.2014 / 23:57