2015-05-29 95 views
3

我有一个htaccess文件,我想要在约60个其他目录中创建符号链接。我怎样才能做到这一点,而不是做了60多遍?如何使用shell命令一次创建符号链接到多个目录

举例:.htaccess文件所在目录public_html/directory/website_1/

我想在创建它的一个符号链接:

public_html/directory/website_2/ 
public_html/directory/website_3/ 
public_html/directory/website_4/ 
public_html/directory/website_5/ 

但目录没有编号这样。只是以此为例。我想要复制符号链接的所有目录都位于一个名为public_html/directory/的主目录中,其中website_1 and website_2等位于其中。

etc etc

我正在使用PuTTY。

这就是我目前创建符号链接的方式。

ln -s ~/public_html/directory/website_1/.htaccess ./website_2/.htaccess 

然后我必须重做这同一行,但改变website_2website_3等60倍。

回答

1

你需要一个for后循环:

for dir in ./website_* 
do 
    [ "$dir" = "./website_1" ] && continue # Skip the master file 
    ln -s ~/public_html/directory/website_1/.htaccess "$dir" 
done 

我不认为有一个更快的方法(除非你使用Perl脚本来完成这项工作,或者也许是Python),但是可能会有更多的调试涉及到它们。

+0

这工作。因为在每个目录中都有一个'-',所以我不得不使用通配符*来代替./*- * 。 – Mike

0

你不能直接。 然后,您必须创建一个,然后将其复制到多个目标。 但是要复制到多个目标,每个目标必须使用cp -s-s创建符号链接而不是复制源)。

正确的方法是创建在目的地的shell脚本循环创建的第一个符号链接

+0

'cp'可能不是在这里做事情的好办法;它不会创建符号链接,但会复制符号链接指向的内容。 –

+0

你是对的我错过了'-s'选项。 –

0

你可以试试这个一班轮:
cd public_html/directory; for i in *; do ln -s <NAME_WEB1>/.htaccess "$i"/.htaccess;done

+0

我进入了主目录并输入'for in in *;做ln -s /.htaccess“$ i”/。htaccess; done',然后得到这个响应大约60次。 '-bash:/.htaccess:权限被拒绝。 – Mike

+0

主.htaccess文件位于airsahara-in /目录中,并且该目录位于public_html /目录的主目录中,其中所有其他目录位于此处我试图为其创建符号链接。 – Mike

相关问题