我正在寻找cp -rcp -a之间的区别。从文件夹复制文件时,“递归”是什么意思?

评论

有些人正在寻找对手册页的更好解释,因为并不总是清楚描述的含义。我不得不进行很多次挖掘和测试/实验,才能弄清楚特定命令的实际作用。 grep的手册页可能会让我感到困惑。

我可以理解您的无奈,但是imo,大多数情况下,最好的学习方法是测试和实验。

或通过在此处提问来学习,以您理解的方式获得答案,然后更好地理解测试和实验的内容以及方式。请记住,对您有用的东西经常对我不利,等等。

我的计算生物学教授@tripledes说,这是一种有点了解您测试过的特定案例而又不真正了解基本规则的好方法。作为科学家,我可以告诉您,实验只能回答您知道要问的问题。

#1 楼

递归意味着cp复制目录的内容,如果目录包含子目录,它们也将被(递归)复制。如果没有-R,则cp命令将跳过目录。 -r与Linux上的-R相同,在某些情况下在某些其他Unix变体上有所不同。但受umask限制;该副本的日期自复制之日起,并且属于进行复制的用户。使用cp选项,副本与原始副本具有相同的修改时间,相同的访问时间和相同的权限。如果进行复制的用户有权创建此类文件,则它也具有与原始所有者和组相同的所有者和组。它尝试使副本尽可能接近原始副本:相同的目录树,相同的文件类型,相同的内容,相同的元数据(时间,权限,扩展属性等)。

评论


基本上,除非您需要特殊的东西,否则就不需要-r,因为-a(对于存档)始终是最安全的,并且可能是您期望发生的事情。

– ams
2012年8月8日在9:20

@ams是的,这是一个很好的总结。使用-r的唯一常见原因是因为您使用的是Linux以外的某些unix变体,而该变体没有-a,并且通常会使用cp -rp。或rsync -a。

–吉尔斯'所以-不再是邪恶的'
2012年8月8日在9:51



有时权限将允许-r但不允许-a

– DrCord
15年12月19日在15:40

不是-r,不是-R在Ubuntu 18中不起作用

– Arkady
19年6月17日在15:06

#2 楼

“递归”的-r或-R选项意味着它将复制所有文件,包括子文件夹内的文件。

列出的-a选项与-dR相同,这意味着它将保留链接并复制子目录的内容。保留链接的含义是,它不会以递归方式复制,而是跟随链接。