Я что-то здесь упускаю.Конечно, все эти регулярные выражения и / или циклы не являются необходимыми, однострочник сделает работу.Кроме того, решения for for foo in $ () не будут работать, если в именах путей есть пробелы.
Просто дважды используйте dirname с xargs, чтобы получить родительский родитель ...
# make test case
mkdir -p /nfs/office/hht/info
mkdir -p /nfs/office/wee1/info
touch /nfs/office/hht/info/.user.log
touch /nfs/office/wee1/info/.user.log
# parent's parent approach
cd /nfs//office/ && find . -name '.user.log' | xargs -I{} dirname {} | xargs -I{} dirname {}
# alternative, have find print parent directory, so dirname only needed once...
cd /nfs//office/ && find . -name ".user.log" -printf "%h\n" | xargs -I{} dirname {}
Производит
./hht
./wee1