ln
toma múltiples argumentos, pero no olvide dar un directorio de destino en ese caso.
Entonces, en tu ejemplo .
es el directorio de destino, por lo que debería ser tan fácil como
ln -s ../source/*.bar .
Desde man ln
; el comando anterior usa la tercera 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)
- En el primer formulario, cree un enlace a TARGET con el nombre LINK_NAME.
- En la segunda forma, cree un enlace a TARGET en el directorio actual.
- En los formularios 3 y 4, cree enlaces a cada OBJETIVO en DIRECTORIO.
Puede probar recursivamente con globstar (bash/zsh establecido por:shopt -s globstar
):
ls -vs ../**/*.bar .
O si la lista es demasiado larga, usando find
utilidad:
find .. -name \*.bar -exec ln -vs "{}" dest/ ';'
Esto creará enlaces en dest/
, o cámbielo a .
para la carpeta actual.
Usa find
certainDir="/path/to/dir"
find -name "*.bar" -exec ln -s {} "$certainDir" \;
Además, recuerda usar rutas completas (donde sea posible) con enlaces simbólicos.