繁体   English   中英

将多个文件符号链接到现有文件夹

[英]Symlink multiple files to an existing folder

我有这个命令:

ln -sf src/* lang/golang/src/genericc/

我想将 src 中的所有文件符号链接到现有的 genericc 目录,但是当我运行上述命令时,我在目标中得到损坏的符号链接。 有人知道怎么做吗?

使用相对路径创建的符号链接(即源路径不以“/”开头)相对于链接所在的目录进行解析。这意味着指向 lang/golang/src 中“src/foo.c”的链接/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/* ./

首先,您可以尝试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。

使用-r选项,ln 创建指向实际文件的链接,无论它们在哪里:

ln -srf src/* lang/golang/src/genericc/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM