2012-04-16 68 views
2

我有一個文件夾(說/數據)與一組文件說:a.txt,b.bin,c.bak,d.txt,e.bin。我需要在文件夾(/ dataIL)中創建具有完全相同名稱(1-1映射)的文件的鏈接。也就是說,/ dataIL應該有5個環節:創建鏈接的腳本

a.txt->../data/a.txt 
b.bin->../data/b.bin 
c.bak->../data/c.bak 
d.txt->../data/d.txt 
e.bin->../data/e.bin 

的命令創建一個鏈接是: LN -s ../data/a.txt A.TXT

想知道腳本命令,我可以運行以創建所有文件。請注意那些帶有其他擴展名的文件。我只需要鏈接到任何擴展名的所有文件。

我有一個bash shell。謝謝。

回答

4

你可以簡單的用星號來創建符號鏈接的所有文件,因爲他們是在一個目錄:

ln -s data/* . 

這是假設你想創建鏈接到所有文件data。還要注意,根據您的設置,這可能會跳過名稱以點開頭的文件。

+1

你甚至都不需要給最後一個參數'ln' - 默認情況下它使用當前目錄。 – 2012-04-16 16:56:17

+0

謝謝。這工作。 – Romonov 2012-04-16 17:06:47

1
find ../data -maxdepth 1 -type f -exec bash -c "ln -s {} \`basename {}\`" \; 

../data可以是任意目錄

+1

與Adam Zalcman的方法相比,唯一的優勢在於,即使目錄中存在大量文件,它也會繼續工作。對大多數人來說這不是一個實際的問題。我會建議一個改進:直接執行'ln',就像這樣:'-exec ln -s {}。 \;'。沒有必要指定目標文件名,因爲它將默認爲源文件名。 – Sorpigal 2012-04-16 16:52:08