Mv:移动(重命名)文件

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年9月14日 (四) 19:42的版本 (创建页面,内容为“ mv可以移动或重命名文件(或目录)。以下是用法示例: <pre>mv [选项]… [-T] 源文件 目标文件 mv [选项]… 源文件… 目录 mv [选项]… -t 目录 源文件…</pre> 如果给出两个文件名,mv将第一个文件移动到第二个文件。 如果使用–target-directory(-t)选项,或者如果最后一个文件是目录且未使用–no-target-directory(-T)选项,则mv将每个源文件移动到指定的目…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

mv可以移动或重命名文件(或目录)。以下是用法示例:

mv [选项]… [-T] 源文件 目标文件
mv [选项]… 源文件… 目录
mv [选项]… -t 目录 源文件…

如果给出两个文件名,mv将第一个文件移动到第二个文件。

如果使用–target-directory(-t)选项,或者如果最后一个文件是目录且未使用–no-target-directory(-T)选项,则mv将每个源文件移动到指定的目录,并使用源文件的名称。


要移动文件,mv通常只是重命名它。但是,如果由于目标文件系统不同而无法重命名,则mv会退回到像cp -a一样进行复制,然后(假设复制成功)删除原始文件。如果复制失败,则mv会删除目标位置上任何部分创建的副本。例如,如果你要从一个文件系统复制三个目录到另一个文件系统,并且第一个目录的复制成功,但第二个目录的复制失败,那么第一个目录将保留在目标文件系统上,而第二个和第三个目录将保留在原始文件系统上。


mv始终尝试复制扩展属性(xattr),这可能包括SELinux上下文、ACL或权限。如果复制失败,除了“不支持的操作”警告外,还会输出其他警告信息。


如果目标文件已存在但通常不可写,并且标准输入是终端,并且未给出-f或–force选项,则mv会提示用户是否替换文件。(你可能拥有该文件,或者对其目录具有写权限。)如果回答是否定的,则跳过该文件。

警告:避免使用带有尾部斜杠的源文件名,因为它可能是指向目录的符号链接。否则,由于mv的行为取决于底层的rename系统调用,它可能会执行一些非常出乎意料的操作。在一个具有基于Linux内核的现代系统上,它将失败并显示errno=ENOTDIR。然而,在其他系统上(至少在FreeBSD 6.1和Solaris 10上),它会默默地重命名符号链接所引用的目录,而不是符号链接本身。

注意:mv仅替换目标中的空目录。冲突的有内容的目录将被跳过,并显示诊断信息。


选项

‘-b’

‘–backup[=方法]’

为每个将被覆盖或删除的文件创建备份。


‘–debug’

向标准输出打印额外的信息,解释文件如何被复制。此选项会隐含 –verbose 选项。


‘-f’

‘–force’

在删除目标文件之前不向用户提示。如果指定了多个 -i、-f、-n 选项,则只有最后一个起作用。


‘-i’

‘–interactive’

询问是否覆盖每个现有的目标文件,而不管其权限如何,并在回答是否定时失败。如果指定了多个 -i、-f、-n 选项,则只有最后一个起作用。


‘-n’

‘–no-clobber’

不覆盖已存在的文件;静默失败。如果指定了多个 -i、-f、-n 选项,则只有最后一个起作用。该选项与 -b 或 –backup 选项互斥。另请参阅 –update=none 选项,它将跳过现有文件但不会失败。


‘–no-copy’

如果无法重命名文件,因为目标文件系统不同,则失败并显示诊断信息,而不是复制然后删除文件。


‘-u’

‘–update’

不移动修改时间戳较新的非目录文件;而是静默跳过该文件而不失败。如果移动跨文件系统边界,则比较源时间戳截断为目标文件系统的分辨率和用于更新时间戳的系统调用的分辨率;这样如果使用相同的源和目标执行多个 ‘mv -u’ 命令,则可以避免重复工作。如果同时指定了 -n 或 –no-clobber 选项,则忽略此选项。


该选项允许更多控制,用于指定要替换目标中的哪些现有文件,其值可以是以下之一:


‘all’

这是未指定 –update 选项时的默认操作,将替换目标中的所有现有文件。


‘none’

类似于 –no-clobber 选项,不替换目标中的任何文件,但是跳过一个文件不会导致失败。


‘older’

这是指定了 –update 时的默认操作,将替换早于相应源文件的文件。


‘-v’

‘–verbose’

在移动文件之前打印每个文件的名称。


‘–strip-trailing-slashes’

从每个源参数中删除任何尾部斜杠。


‘-S 后缀’

‘–suffix=后缀’

为使用 -b 选项创建的每个备份文件添加后缀。


‘-t 目录’

‘–target-directory=目录’

指定目标目录。


‘-T’

‘–no-target-directory’

当最后一个操作数是目录或符号链接到目录时,不对其进行特殊处理。


‘-Z’

‘–context’

此选项的功能类似于 restorecon 命令,根据系统默认类型调整 SELinux 安全上下文,用于目标文件和每个创建的目录。


退出状态为零表示成功,非零值表示失败。