2015-05-29 48 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

相關問題