
Wenn ich laufe
find -maxdepth 1 -type d -name 'iptp*' -execdir bash -c "ls {}" \;
Ich erhalte eine Liste aller Verzeichnisse mit dem Namen iptp*
Wenn ich laufe
find -maxdepth 1 -type d -name 'iptp*' -execdir bash -c "git status {}" \;
Ich bekomme
fatal: Not a git repository (or any parent up to mount parent )
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Es scheint, als git status
würde es im übergeordneten Verzeichnis ausgeführt, in dem „Find“ gestartet wurde.
Was mache ich falsch?
Antwort1
Mit -execdir
wird der Befehl in dem Verzeichnis ausgeführt, das die Übereinstimmung enthält.dhdas übergeordnete Verzeichnis des Verzeichnisses, dessen Name mit „iptp“ beginnt.
Sie können stattdessen .git
mit einemWegpassend dazu iptp*
:
find -maxdepth 2 -type -d -name .git -path "*/iptp*/*" -execdir git status \;