
我想建立指向某個目錄中ln -s
所有文件(或一類文件,例如以 結尾)的符號連結( ) 。.bar
假設我在 cwd 中,類型ls ../source/*.bar
給了我
foo.bar
baz.bar
我怎麼才能將參數列表傳遞給ln -s
它最終解析為
ln -s ../source/foo.bar
ln -s ../source/baz.bar
當然,我知道我可以編寫一個 bash 腳本,但應該有一些更簡單的涉及xargs
左右的東西,因為這似乎是一項常見任務 - 至少對我來說。
答案1
ln
確實需要多個參數,但在這種情況下不要忘記給出目標目錄。
所以,在你的例子中.
是目標目錄,所以它應該像
ln -s ../source/*.bar .
從man ln
;上面的命令使用第三種形式:
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET (2nd form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
ln [OPTION]... -t DIRECTORY TARGET... (4th form)
- 在第一種表單中,建立一個指向 TARGET 的鏈接,名稱為 LINK_NAME。
- 在第二種形式中,在目前目錄中建立指向 TARGET 的連結。
- 在第三種和第四種形式中,建立指向目錄中每個目標的連結。
答案2
您可以使用 globstar 遞歸地嘗試(由 bash/zsh 設定shopt -s globstar
:):
ls -vs ../**/*.bar .
注意:添加是-v
為了詳細。
或者,如果清單太長,請使用find
實用程式:
find .. -name \*.bar -exec ln -vs "{}" dest/ ';'
這將在 中建立鏈接dest/
,或將其變更.
為目前資料夾。
答案3
使用find
certainDir="/path/to/dir"
find -name "*.bar" -exec ln -s {} "$certainDir" \;
另外,記得使用完整路徑(如果可能)帶有符號連結。
答案4
cp
with-s
選項可以建立軟連結(或-l
硬連結)。
從目前目錄可以這樣使用:
$ cp -s ../path/with/scripts/* .
在你的情況下,它將是這樣的:
$ cp -s ../source/*.bar .