ln
prend plusieurs arguments, mais n'oubliez pas de donner un répertoire cible dans ce cas.
Ainsi, dans votre exemple .
est le répertoire cible, donc ça devrait être aussi simple que
ln -s ../source/*.bar .
À partir de man ln
; la commande ci-dessus utilise la 3ème forme :
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)
- Dans le 1er formulaire, créez un lien vers TARGET avec le nom LINK_NAME.
- Dans le 2e formulaire, créez un lien vers TARGET dans le répertoire courant.
- Dans les 3e et 4e formulaires, créez des liens vers chaque CIBLE dans DIRECTORY.
Vous pouvez essayer de manière récursive soit en utilisant globstar (bash/zsh défini par :shopt -s globstar
):
ls -vs ../**/*.bar .
Ou si la liste est trop longue, utilisez find
utilitaire :
find .. -name \*.bar -exec ln -vs "{}" dest/ ';'
Cela créera des liens en dest/
, ou changez-le en .
pour le dossier actuel.
Utilisez find
certainDir="/path/to/dir"
find -name "*.bar" -exec ln -s {} "$certainDir" \;
N'oubliez pas non plus d'utiliser les chemins complets (si possible) avec des liens symboliques.