链接目录中的文件,使用类似于cp的简单命令

时间:2016-05-11 15:01:34

标签: linux bash ln

我的问题来自:

  • 运行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接近我需要的,但绝对的路径,而不是相对的路径?

2 个答案:

答案 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/