我想将我发现的所有符号链接转换为绝对路径,以便我可以移动整个目录。所以我想做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并将其保存为变量,它就会出现乱码。
答案 0 :(得分:1)
find some_path -type l | while read LINK ; do
ln -sf "$(readlink -f "$LINK")" "$LINK"
done
您可以轻松地将其连接到一行。