
Когда я бегу
find -maxdepth 1 -type d -name 'iptp*' -execdir bash -c "ls {}" \;
Я получаю список всех каталогов с именем iptp*
Когда я бегу
find -maxdepth 1 -type d -name 'iptp*' -execdir bash -c "git status {}" \;
я получил
fatal: Not a git repository (or any parent up to mount parent )
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Кажется, git status
он запускается в родительском каталоге, где был запущен find.
В чем моя ошибка?
решение1
При использовании -execdir
команда запускается в каталоге, содержащем совпадение,то естьродительский каталог каталога, имя которого начинается с «iptp».
Вместо этого вы можете поискать .git
с помощьюпутьсоответствие iptp*
:
find -maxdepth 2 -type -d -name .git -path "*/iptp*/*" -execdir git status \;