Você está passando a palavra dirname como o argumento para --git-dir .
Com o GNU ou FreeBSD find, a ação -execdir executa um comando no diretório que contém o arquivo correspondente.
find /c/libs/boost/ -name '.git' -execdir git gc --aggressive \;
Se o seu comando find não tiver -execdir , você pode passar o diretório .git como um argumento para --git-dir .
find /c/libs/boost/ -name '.git' -exec git --git-dir {} gc --aggressive \;
Em geral, se você precisar de expansão de shell, invoque um shell explicitamente, com sh -c 'shell command' . Não tente executar nenhuma interpolação no comando shell, pois isso falharia com nomes de arquivos contendo caracteres especiais. Passe a (s) correspondência (s) como um argumento para o shell script. Observe que, após sh -c 'shell command' , o primeiro argumento é $0 e os outros argumentos ( $1 , $2 ,…) formam coletivamente "$@" .
find /c/libs/boost/ -name '.git' -exec sh -c 'cd "${0%/.}" && git gc --aggressive' {} \;
find /c/libs/boost/ -name '.git' -exec sh -c 'for dir; do cd "${dir%/.}" && git gc --aggressive' _ {} +