在 Linux 中如何使用 mv 命令移动文件和目录

移动文件和目录是您经常需要在 Linux 系统上执行的最基本任务之一。在本教程中,我们将解释如何使用 mv 命令移动文件和目录。

如何使用 mv 命令

mv 命令(move 的缩写)用于将文件和目录从一个位置重命名并移动到另一个位置。该 mv 命令的语法如下:

mv [OPTIONS] source destination

source 可以是一个或多个文件或目录, destination 可以是单个文件或目录。

  • 如果指定多个文件或目录作为 source ,则 destination 必须是目录。在这种情况下, source 文件将移动到目标目录中。
  • 如果将单个文件指定为 source ,并且 destination 目标是现有目录,则该文件将移动到指定目录。
  • 如果将单个文件指定为 source ,并将单个文件指定为 destination 目标,那么您将重命名该文件
  • 如果 source 是目录而 destination 不是目录,则如果 source 存在将重命名为 destination ,否则将移动到 destination 目录中。

要移动,你需要有两个写入权限的文件或目录 sourcedestination 。否则,您将收到权限被拒绝的错误。

例如,要将文件 file1 从当前工作目录移动到 /tmp 目录,您要运行的:

mv file1 /tmp

要重命名文件,请指定目标文件名:

mv file1 file2

移动目录的命令与移动文件时的命令相同。在以下示例中,如果 dir2 目录存在,则命令将 dir1 在移动到 dir2 目录中。如果 dir2 不存在, dir1 将重命名为 dir2

mv dir1 dir2

移动多个文件和目录

要移动多个文件和目录,请指定要作为源移动的文件。例如移动文件 file1file2dir1 目录,你可以输入:

mv file1 file2 dir1

mv 命令还允许您使用模式匹配。例如,要将所有 pdf 文件从当前目录复制到 ~/Documents 您将使用的目录:

mv *.pdf ~/Documents

mv 命令选项

mv 命令接受影响默认命令行为的选项。在某些 Linux 发行版中, mv 可能是具有自定义选项集的命令的别名。例如, CentOS   mv 是别名 mv -i 。您可以 mv 使用以下 type 命令查找是否为别名:

type mv

如果 mv 是别名,则输出将如下所示:

mv is aliased to `mv -i'

如果指定了重复选项,则最后指定的选项优先。

覆盖前提示

默认情况下,如果目标文件存在,它将被覆盖。要提示确认,请使用以下 -i 选项:

mv -i file1 /tmp
mv: overwrite '/tmp/file1'?

要覆盖文件类型,请填写字符 yY

强制覆盖

如果您尝试覆盖只读文件,该 mv 命令将提示您是否要覆盖该文件:

mv -i file1 /tmp
mv: replace '/tmp/file1', overriding mode 0400 (r--------)? 

为了不提示,请使用以下 -f 选项:

mv -f file1 /tmp

当您需要覆盖多个只读文件时,此选项特别有用。

不要覆盖现有文件

-n 选项告诉 mv 永远不要覆盖任何现有文件:

mv -f file1 /tmp

如果 file1 存在,上面的命令将不执行任何操作,否则它将文件复制到该 /tmp 目录。

备份文件

如果目标文件存在,您可以使用以下 -b 选项创建它的备份:

mv -b file1 /tmp

备份文件将与原始文件具有相同的名称,并 ~ 附加了波形符 (\ n  )。

使用 ls 命令验证是否已创建备份:

ls /tmp/file1*
/tmp/file1  /tmp/file1~

详细输出

另一个有用的选择是 -v 。使用此选项时,该命令将打印每个移动文件的名称:

mv -i file1 /tmp
renamed 'file1' -> '/tmp/file1'

结论

到目前为止,您应该很好地理解如何使用该 mv 命令来移动文件和目录。受命令行困扰的新 Linux 用户可以使用 GUI 文件管理器移动文件。

有关该 mv 命令的更多信息,请查看手册页