如何使用shell命令一次创建符号链接到多个目录
我有一个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_2
到website_3
等60倍。
你需要一个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),但是可能会有更多的调试涉及到它们。
你不能直接。 然后,您必须创建一个,然后将其复制到多个目标。 但是要复制到多个目标,每个目标必须使用cp -s
(-s
创建符号链接而不是复制源)。
正确的方法是创建在目的地的shell脚本循环创建的第一个符号链接
'cp'可能不是在这里做事情的好办法;它不会创建符号链接,但会复制符号链接指向的内容。 –
你是对的我错过了'-s'选项。 –
你可以试试这个一班轮:cd public_html/directory; for i in *; do ln -s <NAME_WEB1>/.htaccess "$i"/.htaccess;done
这工作。因为在每个目录中都有一个'-',所以我不得不使用通配符*来代替./*- * 。 – Mike