创建链接时的星号行为

创建链接时的星号行为

我正在尝试为一组文件创建符号链接。

pdf假设我想将扩展名为 an 的所有文件链接origin_directory到我当前的目录。

到目前为止我有这个命令:

ln -nfs origin_directory/*.pdf -t .

这效果非常好。如果我pdf的 中没有任何文件,就会出现问题,因为在这种情况下,在我当前的目录中创建了origin_directory一个文件,并且它是一个损坏的链接。*.pdf

有办法避免这种情况吗?

答案1

在 bash 上这会起作用

if [ -e origin_directory/*.pdf ] ; then ln -nfs origin_directory/*.pdf . ; fi

编辑:如果你有太多文件

if [ $(ls origin_directory/*.pdf | wc -l) -gt "0" ] ; then ln -nfs origin_directory/*.pdf . ; fi

答案2

如果使用bash,则首先运行

shopt -s failglob

或者更好的是,输入你的.bashrc

现在每当你这样做时:

ln -nfs origin_directory/*.pdf -t .

它会成功或失败(带有错误消息,并且不执行任何操作)。


来自手册

failglob 如果设置,则在路径名扩展期间无法匹配文件名的模式将导致扩展错误。

相关内容