ln
bere více argumentů, ale v takovém případě nezapomeňte uvést cílový adresář.
Takže ve vašem příkladu .
je cílový adresář, takže by to mělo být stejně snadné jako
ln -s ../source/*.bar .
Od man ln
; výše uvedený příkaz používá 3. tvar:
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)
- V 1. formuláři vytvořte odkaz na TARGET s názvem LINK_NAME.
- Ve 2. formuláři vytvořte odkaz na TARGET v aktuálním adresáři.
- Ve 3. a 4. formuláři vytvořte odkazy na každý TARGET v DIRECTORY.
Můžete to zkusit rekurzivně buď pomocí globstar (bash/zsh nastavené:shopt -s globstar
):
ls -vs ../**/*.bar .
Nebo pokud je seznam příliš dlouhý, použijte find
nástroj:
find .. -name \*.bar -exec ln -vs "{}" dest/ ';'
Tím se vytvoří odkazy v dest/
nebo jej změňte na .
pro aktuální složku.
Použijte find
certainDir="/path/to/dir"
find -name "*.bar" -exec ln -s {} "$certainDir" \;
Nezapomeňte také použít úplné cesty (pokud je to možné) se symbolickými odkazy.