我知道在Linux中,如果我们要将文件夹从f_old
重命名为f_new
,我们可以运行:
mv f_old f_new
但是这个命令实际上让我很困惑。系统是否会复制f_old
中的所有内容,将其粘贴到新文件夹f_new
并最后删除f_old
?或者只是将f_old
重命名为f_new
?
答案 0 :(得分:9)
如果源和目标位于同一分区上,则不会复制或移动任何内容。各种inode组件都被操纵,就是这样。如果源和目标不同,那么您将看到物理副本和删除。
编辑 -
请注意,操作的是目录条目。这与inode不同。
答案 1 :(得分:6)
只要目标位置与源相同的分区(文件系统),就不会移动或触摸任何数据。只有目录条目中的名称才会更改。
如果目标位于单独的分区上,则数据将首先复制到目标,然后从源中删除。
答案 2 :(得分:4)
完整手册中对此进行了介绍,man mv
解释了如何获取:
The full documentation for mv is maintained as a Texinfo manual. If
the info and mv programs are properly installed at your site, the comâ
mand
info coreutils 'mv invocation'
此处也可在线获取:https://www.gnu.org/s/coreutils/mv
mv可以将任何类型的文件从一个文件系统移动到另一个文件系统。之前 fileutils的4.0版本,mv只能在它们之间移动常规文件 文件系统。例如,现在mv可以移动整个目录 层次结构包括从一个分区到的特殊设备文件 另一个。它首先使用cp -a使用的一些相同代码 复制请求的目录和文件,然后(假设副本 它取消了原件。如果复制失败,那么部分 已删除复制到目标分区的内容。如果你是 将三个目录从一个分区复制到另一个分区和副本 第一个目录成功,但第二个目录没有成功,第一个目录 将留在目标分区和第二个和第三个 将保留在原始分区上。