Решение Bash 4+ (с включенным globstar **
является рекурсивным глобусом и **/
будет рекурсивно расширяться до каждого каталога):
shopt -s globstar
for f in ./**/; do ln -s php.ini "$f"php.ini; done
POSIX решение с find - это будет работать на любом * nix:
find . -type d -exec ln -s php.ini '{}'/php.ini \;
Любой из них должен быть запущен в каталоге D. ln -s
- это команда для создания символической (мягкой) ссылки в * nix, вы можете получить дополнительную информацию об этом с помощью man ln
.
Чтобы впоследствии удалить ссылки, вы можете снова использовать либо bash (при условии версии 4+), либо найти:
shopt -s globstar
for f in ./**/php.ini; do [[ -L "$f" ]] && rm "$f"; done
[[ -L "$f" ]]
проверяет, является ли $ f мягкой связью, а &&
означает «делать следующее, только если предыдущий оценивается как true», так что это не избавит вас от оригинала. Файл php.ini.
find . -type l -name 'php.ini' -delete
-type l
(это строчная буква L, а не единица) указывает, что find ищет только символические (мягкие) ссылки, что означает, что он не найдет и не удалит ваш исходный файл php.ini.