Подстановочный знак * .o в вашем cmd интерпретируется оболочкой, а не программой find.Итак, когда ваш cwd - test_sub, фактически выполняется команда 'find .. -name b.o', которая, правильно, находит bo в ../test_sub.
На самом деле вам нужно, чтобы *Шаблон .o интерпретируется командой find.Итак, вы хотите избежать этого, чтобы оболочка оставила его в покое:
$ find .. -name "* .o"