2012-09-26 43 views
1

我有一个包含我的应用程序的文件夹。然后,我在另一个目录中拥有灵活数量的文件夹,称为“网站”。它看起来像这样:将文件夹动态链接到其他文件夹的正确方法

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

+ -Sites 
+ --Site1 
+ --Site2 

我想在应用程序文件夹中的所有文件的符号链接到网站文件夹下找到的每个文件夹中。所以,最终的结果是这样的:

+ -Sites 
+ --Site1 
+ -- Test.html 
+ -- CSS 
+ --- Style.css 
+ --Site2 
+ -- Test.html 
+ -- CSS 
+ --- Style.css 

所以我认为第一步是在站点文件夹中,然后在文件夹中的所有执行一个符号链接的所有文件夹循环。我不能真正编码,但从我的阅读这样的东西可能是一个起点?

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

的apache默认情况下不会跟随符号连接作为一种安全措施......它可能会更有意义通过在httpd.conf中定义这样你就不会浪费索引节点别名来做到这一点。 –

+0

谢谢你的回复。不过,我正在使用Nginx。问题在于,即使每个站点都有“应用程序”,它们每个都有不同的配置文件。如果你有任何优雅的方式来实现这一点,那么我都是耳朵! –

回答

2
for dir in Sites/*; do 
    cd "$dir" && ln -s ../../Application/* . && cd - 
done 
0

它非常简单直观。使用AWK

ln -s ../../Application/* . 

您可以为所有“站点”运行(从根目录): 你可以得到它去每个站点内执行

ls -l | awk '$1 ~ /d.*/ && $NF !~ /Application/ && NF > 5 {system("cd "$NF" ; ln -s ../../Application/* .");}' - 

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

+0

你需要升级另一个级别:'ln -s ../../Application/* .' –

相关问题