mv 命令
用途
移动文件。
语法
要移动和重命名文件,请输入:
mv [ -d ] [ -e ] [ -E{force|ignore|warn}] [ -i | -f ] [ -I ] SourceFile ... TargetFile
要移动和重命名目录,请输入:
mv [ -d ] [ -e ] -E{force|ignore|warn}] [ -i | -f ] [ -I ] SourceDirectory ... TargetDirectory
要将文件或目录移至对原始文件名进行维护的目录,请输入:
mv [ -d ] [ -e ] -E{强逼|忽略|警示} ] [ -i | -f ] [ -I ] SourceFile/SourceDirectory TargetDirectory
描述
mv 命令将文件和目录从一个目录移动到另一个,或者重命名文件或目录。 如果将文件或目录移动到一个新的目录,那么会保留基本文件名。 当移动文件时,与其他文件的所有链接都保持不动,除非您将其移动到不同的文件系统。 当将目录移动到现有目录时,目录及其内容添加到现有目录下。
当使用 mv 命令来重命名文件或目录时,TargetDirectory 参数可以指定新的文件名或新的目录路径名。
如果移动文件将覆盖没有设置写入权限的现有文件,并且如果标准输入是工作站,mv 命令显示文件权限代码并且从标准输入中读取一行。 如果该行以y或语言环境的等效项y, mv 命令移动文件。 如果响应是除y, mv 命令对该文件不执行任何操作,并继续处理下一个指定的文件。 如果 TargetFile 与 ACL 关联,那么显示的文件许可权代码可能无法完全表示访问许可权。 当 SourceFile 的父目录是可写的并且有粘性位设置,以下的一个或多个条件为真:
- 用户必须拥有文件。
- 用户必须拥有目录。
- 用户必须是特权用户。
- 用户必须对文件具有写权限。
可以使用 -f 选项覆盖此警告消息和输入提示。
可以使用 mv 命令在相同的文件系统或文件系统之间移动文件。 不管是在一个文件系统中工作,还是跨文件系统工作,mv 命令将文件复制到目标处并删除原始文件。 mv 命令在新文件中保存最近数据修改时间、最近访问时间、用户标识、组标识、文件方式、扩展属性以及原始文件的 ACL。 对于符号链路,mv 命令仅保存该链路本身的所有者和组。
如果不能保存所有者和组标识,mv 命令清除目标中的 S_ISUID 和 S_ISGID 位。 如果不能清除这些位,mv 命令将诊断消息打印到标准错误中,退出码无效。
如果对象导出为 NFS V 4 引用,那么 mv 命令将不会移动该对象。 引用对象被标记为忙,并保持该状态直至它不被导出。
标志
注意: 除非指定 -i 标志,否则 mv 命令可以覆盖许多现有文件。 -i 标志会在覆盖文件之前提示确认。 如果同时指定了 -f 和 -i 标志,那么最后指定的标志优先。
| 项 | 描述 |
|---|---|
| -d | 源文件以解密(明文)格式存储在目标上。 |
| -e | 如果目标文件系统是加密文件系统 (EFS),那么源文件以加密格式存储。 |
| -E | -E 选项需要下列参数之一。 如果您省略了 -E 选项,warn 就是缺省的行为。
|
| -f | 在覆盖现有文件之前不提示。 |
| -i | 移动文件或目录到现有的路径名称之前,将显示后跟问号的文件名来进行提示。 如果以行开头的行作为答案y或语言环境的等效项y,动作继续。 其他任何应答都阻止移动发生。 |
| -我 | 在 ACL 转换期间不显示警告消息。 |
| mv 命令的显式标志 | 源文件 | 目标文件系统 | 结果 |
|---|---|---|---|
| -e(加密) | 非 EFS | 非 EFS | 错误 |
| -e | 非 EFS | EFS | 加密的文件 |
| -e | EFS | EFS | 加密的文件 |
| -e | EFS | 非 EFS | 错误 |
| -d(解密) | 非 EFS | 非 EFS | 明文文件 |
| -d | 非 EFS | EFS | 明文文件 |
| -d | EFS | 非 EFS | 明文文件 |
| -d | EFS | EFS | 明文文件 |
| 非显式标志 | 非 EFS | 非 EFS | 明文文件 |
| 非显式标志 | 非 EFS | EFS | 如果目标文件系统已激活 EPS,那么目标文件为加密文件。 否则,目标文件为明文文件。 |
| 非显式标志 | EFS | EFS | 加密的文件 |
| 非显式标志 | EFS | 非 EFS | 错误 |
示例
- 要重命名文件,请输入:
mv appendix apndx.a此命令重命名appendix至apndx.a. 如果是指定的文件apndx.a已存在,其旧内容将替换为appendix.
- 要移动目录,请输入:
mv book manual此命令将所有文件和目录移至book到指定的目录manual,如果manual。 否则,目录book已重命名manual.
- 要将文件移动到另一个目录并为其提供新名称,请输入:
mv intro manual/chap1此命令移动intro至manual/chap1. 名称intro从当前目录中除去,并且同一文件显示为chap1在目录中manual.
- 要将文件移动到另一个目录,保持相同的名称,请输入:
mv chap3 manual此命令移动chap3至manual/chap3
注:例 1 和例 3 命名了两个文件,例 2 命名了两个现有目录,而例 4 命名了一个文件和一个目录。
- 要将多个文件移动到另一个目录中,请输入:
mv chap4 jim/chap5 /home/manual此命令将移动chap4文件到 /home/manual/chap4文件目录和jim/chap5文件到/home/manual/chap5中。
- 要将 mv 命令与模式匹配字符配合使用,请输入:
mv manual/* .此命令将移动manual目录到当前目录中。 (句号) ,保留他们的姓名manual。这一举动也空空manual。必须在星号和句点之间输入空格。
注:模式匹配字符仅扩展现有文件的名称。 例如,命令mv intro man*/chap1如果文件不起作用manual/chap1不存在。
退出状态
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 所有输入文件移动成功。 |
| > 0 | 发生错误。 |
文件
| 项 | 描述 |
|---|---|
| /usr/bin/mv | 包含 mv 命令。 |