使用 pwd、正则表达式和路径中的空格创建大量符号链接

使用 pwd、正则表达式和路径中的空格创建大量符号链接

我正在尝试创建一个脚本,以便将具有相同扩展名的文件放在一个与其他文件分开的文件夹中。具体来说,我想要一个在文件夹中执行的脚本,创建所有 .tex 文件的软链接并将它们放在子文件夹“sources”中。

我知道这ln可以很好地处理正则表达式,并且$PWD$(pwd)返回当前文件夹的路径。所以我尝试执行

ln -s $PWD/*.tex ./sources/

在我的文件夹中,但很快我意识到在我的路径中有一个带空格的文件夹,它ln被读作多个文件。所以我尝试

ln -s '$PWD'/*.tex ./sources/

ln -s '$PWD/*.tex' ./sources/

但在这两种情况下,脚本都会生成一个*.tex以我的sources文件夹命名的文件。根据一些帖子,我尝试修改路径中的空格,如下所示

ln -s $(printf "%q\n" "$PWD")/*.tex sources/

ln -s '$(printf "%q\n" "$PWD")'/*.tex sources/

ln -s '$(printf "%q\n" "$PWD")/*.tex' sources/

但输出是相同的(除了一个额外的字符 之外\)。

帮助?

答案1

您的第一次尝试应该会成功。不是吗?它做了什么?

*用所有匹配的文件名替换,但不是然后在内部空间进行分裂。

“我知道 ln 可以很好地处理正则表达式”——这是错误的。首先,您在这里看到的是 shell 模式,而不是正则表达式。其次,它不是处理它们,而是处理启动或任何其他命令之前ln的 shell(通常是)。bashln

相关内容