如何使用shell命令一次创建多个目录的符号链接

时间:2015-05-29 07:25:39

标签: bash shell

我有一个htaccess文件,我想在大约60个其他目录中创建一个符号链接。我怎么能在一行中做到这一点,而不是超过60次呢?

示例:.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等位于其中。

等等

我使用的是PuTTY。

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

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

然后我必须重做同一行,但将website_2更改为website_3,依此类推60次。

3 个答案:

答案 0 :(得分: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 - 但是可能需要更多的调试工作)。

答案 1 :(得分:0)

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

  

正确的方法是创建shell脚本以在创建第一个符号链接

后循环遍历目标

答案 2 :(得分:0)

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