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

时间:2012-09-26 18:17:33

标签: bash shell

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

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

+ -Sites 
+ --Site1
+ --Site2

我想将应用程序文件夹中的所有文件符号链接到sites文件夹下的每个文件夹中。所以,最终结果如下:

+ -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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

非常简单直观。 您可以在每个站点内部进行操作并执行:

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

您可以使用AWK(从根目录)为所有“站点”运行它:

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

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