查找目录并替换为符号链接

查找目录并替换为符号链接

我正在尝试查找并替换带有符号链接的多个目录,但我不知道如何去做。

我有 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位于lib文件夹内

我明白我必须删除现有目录(rm -r /var/www/html/project1/lib/config),然后创建符号链接(ln -s /var/www/html2/project1/lib/config /var/www/html/project1/lib/config

我可以手动完成此操作,但我想创建一个 1 行或 shell 脚本来执行此操作。

任何帮助将不胜感激!

答案1

使用 bash 的递归通配符:

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来检查,如果不使用它来实际运行链接。

相关内容