如何在 Unix 中复制具有相对路径的符号链接?

如何在 Unix 中复制具有相对路径的符号链接?

我有此文件夹,/full/path/sourceFolder其中包含以下文件:

full/path/sourceFolder/fileA /full/path/sourceFolder/copyA -> fileA /full/path/sourceFolder/copyB

您可以看到符号链接指向同一文件夹中的文件,并且不使用完整路径,而是依赖相对路径进行链接。

现在,我需要一个复制命令,将源文件夹中名为 copy* 的所有文件复制到目标文件夹。当我复制文件 copyA 时,它应该复制符号链接的源,即 fileA,但保留名称 copyA。复制命令也适用于复制文件 copyB。

这能做到吗?

我尝试了这些命令,但是它不起作用,主要是因为我的参考是相对的:

cp -rf --preserve=links /full/path/sourceFolder/copy* /target/path/ cp -RP /full/path/sourceFolder/copy* /target/path/ cp -Hrf /full/path/sourceFolder/copy* /target/path/ cp -Lrf /full/path/sourceFolder/copy* /target/path/

我没什么主意了,实现这一目标的最优雅的方法是什么?

答案1

以下将复制带有符号链接的源文件,但复制引用的文件失败。

cp -d /full/path/sourceFolder/copy* /target/path/

下面还将复制引用的文件

cp -d /full/path/sourceFolder/file* /target/path/

-d 选项是 –no-dereference –preserve=links 的快捷方式

相关内容