我有以下命令:
ln -sf src/* lang/golang/src/genericc/
我想将src中的所有文件符号链接到现有的genericc目录,但是当我运行上述命令时,在目标位置出现了损坏的符号链接。有人知道该怎么做吗?
答案 0 :(得分:1)
使用相对路径创建的符号链接(即,源路径不是以“ /”开头的符号)相对于链接所在目录得到解析。这意味着在lang /中指向“ src / foo.c”的链接golang / src / genericc /目录将尝试解析为lang / golang / src / genericc / src / foo.c,这可能不存在。
解决方案:要么使用到源文件的绝对路径,像这样:
ln -sf /path/to/src/* lang/golang/src/genericc/
或者,为了使*
通配符正确地使用cd
到目标目录,以便相对路径在创建过程中的工作方式与在解析过程中的工作方式相同:>
cd lang/golang/src/genericc
ln -sf ../../../../src/* ./
答案 1 :(得分:1)
首先,您可以尝试ln -s $PATH_TO_SRC/* $PATH_TO_TARGET/
。
但是,它可能会出现“参数列表过长错误”。
然后您可以使用:
find $PATH_TO_SRC/ -type f -name "*.jpg" -exec cp -s {} . \;
因为如果您将ln -s
与find或bash循环一起使用,它将只会创建一个空链接。相反,我们也可以使用cp -s
创建smylink。