Это очень просто:
find A -type d -name target -execdir foo.sh \;
На странице руководства:
-execdir command;
Аналогично -exec, но указанная команда запускается из подкаталога, содержащего соответствующий файл.
Пример:
Создайте и распечатайте структуру каталогов из вопроса:
/tmp$ mkdir A; cd A
/tmp/A$ mkdir -p subA-1 subA-2/target subA-3/sub-subA-3/target
/tmp/A$ find .
.
./subA-2
./subA-2/target
./subA-3
./subA-3/sub-subA-3
./subA-3/sub-subA-3/target
./subA-1
Теперь выполните команду, заменив foo.sh
pwd
на foo.sh
, чтобы показать, что происходит:
/tmp/A$ find . -type d -name target -execdir pwd \;
/tmp/A/subA-2
/tmp/A/subA-3/sub-subA-3
Единственная разница в их имени; nfs-kernel-server
является псевдонимом дляnfs-server
:
$ systemctl show -pNames nfs-server
Names=nfs-server.service nfs-kernel-server.service
Запуск и остановка любого из них приведет к запуску и остановке сервера NFS.