假设我有一个文件夹:/usr/lib/x86_64-linux-gnu/wxcrafter
包含一些库文件及其相应的符号链接,例如:
/usr/lib/x86_64-linux-gnu/wxcrafter/lib1.so.0 -> /usr/lib/x86_64-linux-gnu/wxcrafter/lib1.so.0.0.0
/usr/lib/x86_64-linux-gnu/wxcrafter/lib2.so.0 -> /usr/lib/x86_64-linux-gnu/wxcrafter/lib2.so.0.0.0
我想将wxcrafter
的副本复制到新位置codeblocks
,保留符号链接目标的相对位置:
usr/lib/x86_64-linux-gnu/codeblocks/lib1.so.0 -> /usr/lib/x86_64-linux-gnu/codeblocks/lib1.so.0.0.0
/usr/lib/x86_64-linux-gnu/codeblocks/lib2.so.0 -> /usr/lib/x86_64-linux-gnu/codeblocks/lib2.so.0.0.0
如果可能有许多这样的符号链接,我如何在命令行上执行此操作?
答案 0 :(得分:1)
使用symlinks程序将绝对符号链接转换为相对符号:
symlinks -c wxcrafter
然后复制整个目录:
cp -a wxcrafter codeblocks
如果您必须使用绝对符号链接(但为什么会这样?),请在运行symlinks
之前制作原始目录的副本,并在完成后将其恢复。
副本(codeblocks
)将具有相对链接,如果您需要它们,则必须编写一个小脚本(使用ln -fs $(pwd)/$(readlink $l) $l
将任何符号链接$l
从相对转换为绝对),因为symlinks
仅在一个方向上转换。但是,再次,为什么要这么麻烦?