微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

复制具有指向复制文件的符号链接的目录目录树内

我想复制一个文件夹及其所有内容包括文件夹。 我在Ubuntu上使用C语言。

复制常规文件文件夹到目前为止很简单,但复制链接的规范(现在是符号)是指它们应链接到复制的文件。 现在我只对目录树内的链接感兴趣。

(虽然我认为树之外的链接应该更容易 – 只需将完整path复制到新链接,并查明它们是否属于树中,尽pipesarnold给了我一个关于使用rsync来实现这一点的提示

所以我有一个由readlink返回的绝对path:

如何将制表符分隔的文本复制到剪贴板从一个unixshell,同时保留选项卡?

.NET:如何使用Windows“复制文件”对话框复制文件

文件复制和重命名

在Windows剪贴板复制缓冲区中包含格式化信息以粘贴到Excel中

无法将成员添加到MongoDB副本集

/home/giorgos/Desktop/folder/folder1/a.pdf

最坏的情况是:

/home/giorgos/Desktop/folder/folder/folder/folder1/a.pdf

但我找不到一种方法来检索我的目录树的相对path。 如果我能find它,我可以用复制的目录名称replace它:

/home/giorgos/Desktop/march/folder/myfolder/folder/folder1/a.pdf

我不能使用cp或system()函数或那种函数解决scheme必须是低级的。 我可以使用C库加上GNU,但请发表一个答案,无论如何,我感兴趣。

数据库拓扑devise混乱

一个远程文件放入hadoop而不复制到本地磁盘

如何获取文件(我想要复制的文件)和C中复制的文件信息

如何将某些文件从相同的目录复制到Windows命令提示符中的另一个目录?

复制FOR循环工作,但不断给出错误文件不能被复制到自己”

让我们假设你需要将目录SRC_DIR复制到DST_DIR ,这两者都是绝对路径(如果没有的话,使用getcwd转换它们是微不足道的)。

这个伪代码应该覆盖所有的可能性(可能需要大量的重复使用strtok来标记“/”分隔符处的路径):

if (SRC_DIR/SUBDirs/LINK is a symlink that points to TARGET_LOCATION) { // TARGET_LOCATION may be relative *or* absolute. Make it absolute: if (TARGET_LOCATION does not begin with '/') { prepend SRC_DIR/ to it } if (TARGET_LOCATION contains a subdirectory named '..') { replace occurances of 'SOMEDIRNAME/..' with '' } if (TARGET_LOCATION contains a subdirectory named '.') { replace occurances of '/.' with '' } // Now TARGET_LOCATION is an absolute path if (TARGET_LOCATION does not begin with SRC_DIR) { // symlink points outside tree create symlink DST_DIR/SUBDirs/LINK pointing to TARGET_LOCATION } else { // symlink points inside tree strip SRC_DIR from beginning of TARGET_LOCATION prepend DST_DIR to TARGET_LOCATION create symlink DST_DIR/SUBDirs/LINK pointing to TARGET_LOCATION } }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐