po zamówieniu dla find -exec?

0

Chcę usunąć niektóre katalogi z hierarchii za pomocą polecenia „find -exec”

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

Otrzymuję komunikaty o błędach

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

ponieważ „find -exec” najwyraźniej działa w przedsprzedaży, tzn. najpierw wykonuje pracę, a następnie odwiedza dzieci. Nie chcę po prostu przekierowywać komunikatów o błędach do / dev / null, ponieważ mogą one mieć znaczenie. Jakieś sugestie?

Max Spring
źródło
Off-topic dla SO; należy do Super User
Ex Umbris

Odpowiedzi:

2

Szukasz opcji -dlub-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.

Bądź ostrożny -depth, jeśli dodasz liczbę, zmieni to znaczenie.

Kevin
źródło