将多个文件符号链接到现有文件夹
Symlink multiple files to an existing folder
我有这个命令:
ln -sf src/* lang/golang/src/genericc/
我想将 src 中的所有文件符号链接到现有的 genericc 目录,但是当我 运行 上面的命令时,我在目标中得到了损坏的符号链接。有人知道怎么做吗?
Symlinks 使用相对路径创建(即源路径不以“/”开头)相对于 link 所在的目录进行解析。这意味着 link 到 lang/golang/src/genericc/ 目录中的 "src/foo.c" 会尝试解析到 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/
。
但是,它可能有 "Argument list too long error"。
那么你可以使用:
find $PATH_TO_SRC/ -type f -name "*.jpg" -exec cp -s {} . \;
因为如果您将 ln -s
与查找或 bash 循环一起使用,它只会创建一个空的 link。相反,我们也可以使用 cp -s
来创建一个 smylink。
我有这个命令:
ln -sf src/* lang/golang/src/genericc/
我想将 src 中的所有文件符号链接到现有的 genericc 目录,但是当我 运行 上面的命令时,我在目标中得到了损坏的符号链接。有人知道怎么做吗?
Symlinks 使用相对路径创建(即源路径不以“/”开头)相对于 link 所在的目录进行解析。这意味着 link 到 lang/golang/src/genericc/ 目录中的 "src/foo.c" 会尝试解析到 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/
。
但是,它可能有 "Argument list too long error"。
那么你可以使用:
find $PATH_TO_SRC/ -type f -name "*.jpg" -exec cp -s {} . \;
因为如果您将 ln -s
与查找或 bash 循环一起使用,它只会创建一个空的 link。相反,我们也可以使用 cp -s
来创建一个 smylink。