Я хотел бы создать символические ссылки ( 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
так как это кажется обычной задачей - по крайней мере, для меня.
linux
bash
symbolic-link
dastrobu
источник
источник
*.bar
. Это создаст ссылку с именем"*.bar"
, которое не то, что вы хотите.shopt -s failglob
; см., например, unix.stackexchange.com/a/216227/33390 (эквивалент в zsh естьsetopt nomatch
, который включен по умолчанию)использование
find
Кроме того, не забывайте использовать полные пути (где это возможно) с символическими ссылками.
источник
find $certainDir -name "*.bar" -exec ln -s {} \;
? И почему я должен использовать полные пути? Мне очень удобно знать, что ссылки остаются неизменными, когда я перемещаю дерево каталогов, у которого есть некоторые внутренние ссылки.Вы можете попробовать рекурсивно либо с использованием globstar (bash / zsh устанавливается с помощью:)
shopt -s globstar
:Примечание: добавлено
-v
для многословия.Или, если список слишком длинный, используйте
find
утилиту:Это создаст ссылки
dest/
или поменяет их.
на текущую папку.источник
cp
с-s
опцией можно создавать мягкие ссылки (или-l
для жестких ссылок).Из текущего каталога можно использовать вот так:
В вашем случае это будет так:
источник