我正在尝试为一组文件创建符号链接。
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 如果设置,则在路径名扩展期间无法匹配文件名的模式将导致扩展错误。