将符号链接转换为绝对使用find的相对路径

时间:2013-12-13 21:05:17

标签: shell

我想将我发现的所有符号链接转换为绝对路径,以便我可以移动整个目录。所以我想做convert relative symbolic links to absolute symbolic links这样的事情,使用find会有效。

find some_path -type l -exec ln -sf "$(readlink -f "{}")" "{}" \;

但这不符合我的预期。寻找原因,我发现:

find some_path -type l -exec readlink -f "{}" \;

上面返回找到的链接的绝对路径,但是

find some_path -type l -exec echo "$(readlink -f "{}")" \;

这会产生错误的路径。所以使用find -exec进行命令扩展无法正常工作。我该怎么办?我试过了find ... | xargs -i,但是在那里,一旦我尝试使用readlink将linkname替换为abspath并将其保存为变量,它就会出现乱码。

1 个答案:

答案 0 :(得分:1)

find some_path -type l | while read LINK ; do 
  ln -sf "$(readlink -f "$LINK")" "$LINK"
done

您可以轻松地将其连接到一行。