0

我的问题起源于哪里:

  • 运行时cp source/files.all destination/,其中的所有文件source现在也将存在于destination

问题:

  • 如果我不想将数据从sourceinto复制destination,而只是将它们链接起来(使用绝对路径)怎么办。通常,我会运行类似:

    for f in $(ls source/); do ln -s $(pwd)/${f} $(pwd)/destination; done

    是否有一个我可以使用的简单命令/工具(例如ln -a source/files.all destination/),它可以创建指向目录中所有文件的软链接,同时自动添加绝对路径作为前缀。ln -r接近我需要的,但绝对路径,而不是相对路径?

4

2 回答 2

2

我会用find "$PWD/source" -exec ln -s {} destination \;. 用作第一个参数的绝对路径find将导致{}被每个命令的源文件的绝对路径替换。

GNUln支持-t指定目标目录的选项,允许您使用更有效的调用find

find "$PWD/source" -exec ln -s -t destination {} +

-exec ... +形式要求是命令中的{}最后一个参数;-t允许您将目标参数向上移动以适应该要求。

于 2016-05-11T15:20:12.677 回答
0

所以我最终找到了一种简单的方法来做到这一点:

只需运行ln -s $(pwd -P)/source/* destination/

于 2016-10-27T12:24:29.630 回答