Solução Bash 4+ (com globstar ativado, **
é um glob recursivo e **/
expandirá para todos os diretórios, recursivamente):
shopt -s globstar
for f in ./**/; do ln -s php.ini "$f"php.ini; done
Solução POSIX com find - isso funcionará em qualquer * nix:
find . -type d -exec ln -s php.ini '{}'/php.ini \;
Qualquer um desses deve ser executado no diretório D. ln -s
é o comando para criar um link simbólico (soft) no * nix, você pode conferir mais informações sobre ele com man ln
.
Para remover os links depois, você pode usar novamente o bash (assumindo a versão 4+) ou encontrar:
shopt -s globstar
for f in ./**/php.ini; do [[ -L "$f" ]] && rm "$f"; done
O [[ -L "$f" ]]
testa para ver se $ f é um link, e &&
significa 'só faz a próxima coisa se o anterior for avaliado como verdadeiro' - então isso não vai acabar com o seu php original arquivo .ini '.
find . -type l -name 'php.ini' -delete
-type l
(que é um L minúsculo, não um) diz ao procurador para procurar links simbólicos (suaves) apenas, o que significa que não encontrará & exclua o arquivo original 'php.ini'.