为什么 cp 需要 -r 而 mv 不需要?

为什么 cp 需要 -r 而 mv 不需要?

要复制目录及其内容cp需要一个-r开关。

要移动目录及其内容mv不需要-r切换。

这是什么原因呢?

编辑:别担心。尽管进行了搜索,但在发布此问题后我发现它已得到解答这里

答案1

当您使用该mv命令时,您只是更改有关顶级目录或单个文件的元数据,当您使用该cp命令时,您实际上是在制作单个文件或目录树的副本。为了区分这两种模式,该cp命令需要您指定要使用的行为。

您可以使用查看元数据stat

$ stat /home/vagrant/adir
  File: ‘/home/vagrant/adir’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 794269      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-07-14 10:57:17.103849041 -0400
Modify: 2018-07-14 10:57:17.103849041 -0400
Change: 2018-07-14 10:57:17.103849041 -0400
 Birth: -

我们移动它之后:

$ stat /tmp/adir
  File: ‘/tmp/adir’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 794269      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-07-14 10:57:17.103849041 -0400
Modify: 2018-07-14 10:57:17.103849041 -0400
Change: 2018-07-14 10:57:53.323950044 -0400
 Birth: -

mv命令只是操作有关目录的元数据,因此不需要实际复制任何内容来完成这项工作。

相关内容