有没有一种方法可以使用通配符创建符号链接?

3

我有一个脚本run.sh,我创建了一些符号链接如pf1、pf2等。

我希望以pf开头的任何内容都映射到这个脚本。有没有办法创建一个通配符符号链接,比如"pf*",这样将来就不必为pf11、pf12等创建符号链接了?


2
你可以创建cron来自动为你构建符号链接。但是不知道上下文很难做出建议。你为什么想要所有这些符号链接? - Wes
1
你实际上想做什么?所有符号链接都指向同一个文件吗?还是分别指向不同目录中与每个链接名称相同的不同文件? - Mad Physicist
3
请提供一些具体的例子和实际的代码。 - Mad Physicist
1
@MadPhysicist 如果他有一个渐增的文件列表(p23,p24),但实际上他应该向“run.sh p23”发送一个参数-不确定将来会发生什么过程 :) - Wes
1
所有的链接都指向同一个文件。在这种情况下:for i in {1..1000}; do ln -s ./run.sh ./pf$i; done - John1024
显示剩余3条评论
3个回答

7

如果您的系统支持Bash(大多数系统都支持),您可以像这样执行以下操作 -

bash -c "ln -s sourcedir/pf* targetdir/"

只是在这里添加一下。如果源目录不存在,这将添加“*”作为损坏的符号链接。 - Likqez

5

不支持符号链接解析是由内核处理的,而通配符扩展是特定于shell的。

如果您在符号链接中存储pf*,则内核将寻找名为pf*的文件。您可以理论上readlink它并让您的shell扩展读取模式,但这样做与其存储模式在常规文件中不如。


1
您可以创建符号链接,这些链接是不完整的(一旦文件存在,它们就变得完全可用),但在文件存在之前,*通配符将不会被扩展。其他扩展将起作用。使用echo自行检查:
$ echo asdf*
asdf*

通配符在此处不会被扩展,但您可以使用。
$ echo asdf{1,2,3}
asdf1 asdf2 asdf3

并且它会按照你的预期进行展开。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接