我正在尝试查找并替换带有符号链接的多个目录,但我不知道如何去做。
我有 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
来检查,如果不使用它来实际运行链接。