Команда cd
не может использоваться с -exec
в find
, поскольку cd
является встроенной оболочкой (вы можете проверить это с помощью type cd
), а не исполняемым (т. Е. Такого исполняемого файла нет) /usr/bin/cd
). В вашем случае вы можете включить имя папки в команду touch
следующим образом:
find .. -type d -depth 1 -exec touch "{}/abc" \;
или использовать git
по вашему запросу (опция -C
позволяет вам запускать git
, как если бы вы были в этом каталоге):
find .. -type d -depth 1 -exec git -C "{}" some_git_action \;
Даже без find
:
for i in ../*/; do cd "$i"; some_cmd; cd -; done
cd
в этот каталог и используйте cd -
до go назад к оригиналу и добавив завершающий /
, звездочка будет расширена только до каталогов.