假设我有一个文件夹:/usr/lib/x86_64-linux-gnu/wxcrafter
包含一些库文件及其相应的符号链接(symbolic link),例如:
/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
,保留符号链接(symbolic link)目标的相对位置:
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
考虑到可能有许多这样的符号链接(symbolic link),我如何在命令行上执行此操作?
最佳答案
使用 symlinks将绝对符号链接(symbolic link)转换为相对符号链接(symbolic link)的程序:
symlinks -c wxcrafter
然后复制整个目录:
cp -a wxcrafter codeblocks
如果您必须使用绝对符号链接(symbolic link)(但为什么要这样做?),请在运行symlinks
之前复制原始目录,并在完成后恢复它。
副本 (codeblocks
) 将有相对链接,如果你绝对需要它们,你将不得不编写一个小脚本(使用 ln -fs $(pwd)/$(readlink $l) $l
将任何符号链接(symbolic link) $l
从 relative 转换为 absolute),因为 symlinks
仅在一个方向上转换。但是,又何必呢?
关于linux - 如何复制包含绝对符号链接(symbolic link)的文件夹并保留其相对目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49596700/