Я пытаюсь найти и заменить несколько каталогов с символьными ссылками, но я понятия не имею, как сделать это.
У меня есть 2 корневых папки, позволяет, говорят /var/www/html
и /var/www/html2
и они оба содержат те же файлы и папки, например
/var/www/html/project1/lib/config
/var/www/html2/project1/lib/config
/var/www/html/project2/v1/lib/config
/var/www/html2/project2/v1/lib/config
/var/www/html/project2/v2/lib/config
/var/www/html2/project2/v2/lib/config
То, что я хочу сделать, искать /var/www/html
и замените все config
папки с символьной ссылкой на ту же папку в /var/www/html2
, но только если config
внутри a lib
папка
Я понимаю, что должен буду удалить существующий каталог (rm -r /var/www/html/project1/lib/config
) и затем создайте символьную ссылку (ln -s /var/www/html2/project1/lib/config /var/www/html/project1/lib/config
)
Я могу сделать это вручную, но я хотел бы создать 1 лайнер или сценарий оболочки, чтобы сделать это.
Любая справка значительно ценилась бы!
Используя рекурсивный globbing удара:
shopt -s globstar
cd /var/www/html
for d in **/lib/config
do
echo rm -r "$d"
echo ln -s /var/www/html2/"$d" "$d"
done
Выполнение с echo
для проверки работайте без него, чтобы на самом деле сделать соединение.