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

标签 linux bash ln

我的问题来源:

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

问题:

  • 如果我不想将数据从 source 复制到 destination,而是简单地链接它们(使用绝对路径).通常,我会运行类似的东西:

    for f in $(ls source/);执行 ln -s $(pwd)/${f} $(pwd)/目的地;完成

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

最佳答案

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

GNU ln 支持 -t 选项来指定目标目录,允许您使用更高效的 find 调用:

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

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

关于linux - 链接目录中的文件,使用类似于 cp 的简单命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37166506/

相关文章:

linux - 批量移动文件并在 linux 目录中的位置创建链接

command-line-arguments - Ubuntu 中的符号链接(symbolic link)递归地将一个目录中的文件链接到另一个目录

linux - 将链接复制到多个子文件夹

mysql - 在 Ubuntu 上使用 APT 安装的 MySQL 的 BASEDIR 在哪里?

Linux 排序表现出奇怪的行为

linux - 在 grep 搜索后添加 echo

linux - 为什么用 shell 脚本目标调用 make 会创建一个可执行文件?

bash - 简单的 bash/脚本格式化工具,用于脚本中的段落文本?

linux - 超过 100 MB 时使用 find 删除目录内容

linux - NGINX:允许多个端口可用于 https + 将所有 http 重定向到 https