Bash 将文件夹动态符号链接到其他文件夹的正确方法

Bash 将文件夹动态符号链接到其他文件夹的正确方法,bash,shell,Bash,Shell,我有一个包含我的应用程序的文件夹。然后,我在另一个名为“站点”的目录中有一个灵活数量的文件夹。看起来是这样的: + -Application + -- Test.html + -- CSS + --- Style.css + -Sites + --Site1 + --Site2 + -Sites + --Site1 + -- Test.html + -- CSS + --- Style.css + --Site2 + -- Test.html + -- CSS + --- Style.c

我有一个包含我的应用程序的文件夹。然后,我在另一个名为“站点”的目录中有一个灵活数量的文件夹。看起来是这样的:

+ -Application
+ -- Test.html
+ -- CSS
+ --- Style.css

+ -Sites 
+ --Site1
+ --Site2
+ -Sites 
+ --Site1
+ -- Test.html
+ -- CSS
+ --- Style.css
+ --Site2
+ -- Test.html
+ -- CSS
+ --- Style.css
我想将应用程序文件夹中的所有文件符号链接到sites文件夹下的每个文件夹中。因此,最终结果如下所示:

+ -Application
+ -- Test.html
+ -- CSS
+ --- Style.css

+ -Sites 
+ --Site1
+ --Site2
+ -Sites 
+ --Site1
+ -- Test.html
+ -- CSS
+ --- Style.css
+ --Site2
+ -- Test.html
+ -- CSS
+ --- Style.css
因此,我认为第一步是对Sites文件夹中的所有文件夹进行循环,然后对文件夹中的所有内容执行符号链接。我真的无法编写代码,但从我的阅读来看,这可能是一个起点

find ./* -type d |
while read LINE
do
        echo ln -s /absolute/path/to/files/* "$LINE"
done

这是非常简单和直观的。 您可以让它进入每个站点并执行:

ln -s ../../Application/* .
您可以使用AWK(从根目录)为所有“站点”运行它:

描述:列出文件,获取目录(/d.*/),忽略应用程序文件夹,转到每个文件夹(cd$NF)并执行“魔术行”。

for dir in Sites/*;做
cd“$dir”和&ln-s.././Application/.*。&&光盘-
完成

apache默认情况下不会使用符号链接作为安全措施。。。通过httpd.conf中定义的别名来实现这一点可能更有意义,这样您就不会浪费inode了。谢谢您的回复。然而,我正在使用Nginx。问题是,尽管每个站点都有“应用程序”,但它们都有不同的配置文件。如果你有任何优雅的方法来实现这一点,那么我洗耳恭听!您需要升级到另一个级别:
ln-s.././Application/*。