Я хочу удалить определенные каталоги из hiearchy, используя 'find -exec'

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

Я получаю сообщения об ошибках

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

потому что 'find -exec', очевидно, работает в предзаказе, то есть сначала выполняет работу, а затем посещает детей. Я не хочу просто перенаправлять сообщения об ошибках в /dev /null, потому что они могут быть значимыми. Какие-либо предложения?

1 ответ1

2

Вы ищете опцию -d или -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.

Будьте осторожны с -depth , если вы добавите число, оно изменит смысл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .