我的问题来自:
cp source/files.all destination/
时,source
中的所有文件现在也会出现在destination
问题:
如果我不想将source
的数据复制到destination
,但只是链接它们(绝对路径),该怎么办?通常,我会运行类似的东西:
for f in $(ls source/); do ln -s $(pwd)/${f} $(pwd)/destination; done
我是否可以使用简单的命令/工具(例如ln -a source/files.all destination/
)来创建指向目录中所有文件的软链接,而自动添加绝对路径作为前缀。 ln -r
接近我需要的,但绝对的路径,而不是相对的路径?
答案 0 :(得分:2)
我会使用find "$PWD/source" -exec ln -s {} destination \;
。用作find
的第一个参数的绝对路径将导致{}
被每个命令的源文件的绝对路径替换。
GNU ln
支持-t
选项来指定目标目录,允许您更有效地调用find
:
find "$PWD/source" -exec ln -s -t destination {} +
-exec ... +
表单需要{}
作为命令中的最后一个参数; -t
允许您向上移动目标参数以满足该要求。
答案 1 :(得分:0)
所以我最终找到了一种简单的方法:
只需运行ln -s $(pwd -P)/source/* destination/