ln
accetta più argomenti, ma in tal caso non dimenticare di fornire una directory di destinazione.
Quindi, nel tuo esempio .
è la directory di destinazione, quindi dovrebbe essere facile come
ln -s ../source/*.bar .
Da man ln
; il comando precedente utilizza la terza forma:
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)
- Nel primo modulo, crea un collegamento a TARGET con il nome LINK_NAME.
- Nel secondo modulo, crea un collegamento a TARGET nella directory corrente.
- Nella terza e quarta forma, crea collegamenti a ciascun TARGET in DIRECTORY.
Puoi provare in modo ricorsivo usando globstar (bash/zsh impostato da:shopt -s globstar
):
ls -vs ../**/*.bar .
O se la lista è troppo lunga, usando find
utilità:
find .. -name \*.bar -exec ln -vs "{}" dest/ ';'
Questo creerà collegamenti in dest/
o modificalo in .
per la cartella corrente.
Usa find
certainDir="/path/to/dir"
find -name "*.bar" -exec ln -s {} "$certainDir" \;
Inoltre, ricorda di utilizzare i percorsi completi (ove possibile) con collegamenti simbolici.