首页 > 解决方案 > 如何根据文件自动创建符号链接?

问题描述

我有一个包含多行源和目标的文本文件。

例子:

"/home/desktop/aaa t" "/home/desktop/bbb"
"/home/desktop/ee e" "/home/desktop/aa/rr r"

我试过这个: cat ../symlinks.txt | xargs -i{} -d\n ln -s {}但这似乎被打破了,而且ln似乎不喜欢那样。

我需要创建很多从文件到目标路径的符号链接,这些符号链接到源。使用 bash 我怎么能做到这一点?这些路径目前都用引号引起来,并且是绝对路径,因为ln似乎无法采用相对路径。

标签: bashunix

解决方案


不使用“-I”会将整个输入行作为单个参数传递,而是考虑使用“-L1”,它将使用xargs支持引号和反斜杠的默认分词。

xargs -L1 ln -s < ../symlinks.txt

来自xargs男人:

... xargs 从标准输入中读取项目,由空格(可以用双引号或单引号或反斜杠保护)或换行符分隔...

关于相对路径的注意事项:没有理由ln不适用于相对符号链接。尝试以下

echo '"a b" c' | xargs -L1 ln -s

这将创建一个符号链接“c”到当前文件夹中的(不存在的)文件“a b”。


推荐阅读