Найдите каталог и замену символьной ссылкой

Я пытаюсь найти и заменить несколько каталогов с символьными ссылками, но я понятия не имею, как сделать это.

У меня есть 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 лайнер или сценарий оболочки, чтобы сделать это.

Любая справка значительно ценилась бы!

1
задан 13 October 2017 в 16:33

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 для проверки работайте без него, чтобы на самом деле сделать соединение.

2
ответ дан 7 December 2019 в 13:29

Другие вопросы по тегам:

Похожие вопросы: