为初学者解释的 Linux mv 命令(8 个示例)为初学者解释的 Linux mv 命令(8 个示例)为初学者解释的 Linux mv 命令(8 个示例)为初学者解释的 Linux mv 命令(8 个示例)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

为初学者解释的 Linux mv 命令(8 个示例)

在此页

  1. Linux mv 命令
  2. Q1。如何在 Linux 中使用 mv 命令?
  3. Q2。如何确保 mv 在覆盖之前提示?
  4. Q3。如何使 mv 不覆盖现有文件?
  5. Q4。如何使 mv 从 source 参数中删除尾部斜杠(如果有)?
  6. Q5。如何使 mv 将目标视为普通文件?
  7. Q6。仅当文件比目标文件更新时,如何使 mv 移动文件?
  8. Q7。如何让 mv 发出它正在做什么的详细信息?
  9. Q8。如何强制 mv 创建现有目标文件的备份?
  10. 结论

就像用于复制的 cp 和用于删除的 rm 一样,Linux 还提供了用于移动和重命名文件的内置命令。它叫做mv。在本文中,我们将使用易于理解的示例来讨论此命令行工具的基础知识。请注意,本教程中使用的所有示例都已在 Ubuntu 22.04 LTS 上进行了测试。

Linux mv命令

如前所述,Linux 中的 mv 命令用于移动或重命名文件。以下是该命令的语法:

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

这是手册页中关于它的内容:

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

以下问答式示例将使您更好地了解此工具的工作原理。

Q1。如何在 Linux 中使用 mv 命令?

如果只想重命名文件,可以按以下方式使用 mv 命令:

mv [filename] [new_filename]

例如:

mv names.txt fullnames.txt

同样,如果要求将文件移动到新位置,请按以下方式使用 mv 命令:

mv [文件名] [目标目录]

例如:

mv fullnames.txt /home/himanshu/Downloads

Q2。如何确保 mv 在覆盖之前提示?

默认情况下,当操作涉及覆盖现有文件时,mv 命令不会提示。例如,以下屏幕截图显示现有的 full_names.txt 已被 mv 覆盖,没有任何警告或通知。

但是,如果需要,可以使用 -i 命令行选项强制 mv 进行提示。

mv -i [文件名] [新文件名]

所以上面的截图清楚地表明 -i 导致 mv 在覆盖现有文件之前询问用户许可。请注意,如果您想明确指定不希望 mv 在覆盖前提示,请使用 -f 命令行选项。

Q3.如何使 mv 不覆盖现有文件?

为此,您需要使用 -n 命令行选项。

mv -n [filename] [new_filename]

以下屏幕截图显示 mv 操作没有成功,因为名称为 full_names.txt 的文件已经存在并且命令中有 -n 选项。

笔记:

If you specify more than one of -i, -f, -n, only the final one takes effect.

Q4.如何使 mv 从 source 参数中删除尾部斜杠(如果有)?

要从源参数中删除任何尾部斜杠,请使用 --strip-trailing-slashes 命令行选项,如下所示。

mv --strip-trailing-slashes [source] [dest]

官方文档是这样解释这个选项的用处的:

This is useful when a source argument may have a trailing slash and specify a symbolic link to a directory. This scenario is in fact rather common because some shells can automatically append a trailing slash when performing file name completion on such symbolic links. Without this option, mv, for example, (via the system’s rename function) must interpret a trailing slash as a request to dereference the symbolic link and so must rename the indirectly referenced directory and not the symbolic link. Although it may seem surprising that such behavior be the default, it is required by POSIX and is consistent with other parts of that standard.

Q5.如何使 mv 将目标视为普通文件?

要确保目标实体被视为普通文件(而不是目录),请使用 -T 命令行选项。

mv -T [source] [dest]

下面是此命令行选项存在的原因:

This can help avoid race conditions in programs that operate in a shared area. For example, when the command ‘mv /tmp/source /tmp/dest’ succeeds, there is no guarantee that /tmp/source was renamed to /tmp/dest: it could have been renamed to/tmp/dest/source instead, if some other process created /tmp/dest as a directory. However, if mv -T /tmp/source /tmp/dest succeeds, there is no question that/tmp/source was renamed to /tmp/dest.
In the opposite situation, where you want the last operand to be treated as a directory and want a diagnostic otherwise, you can use the --target-directory (-t) option.

Q6.仅当文件比目标文件更新时,如何使 mv 移动文件?

假设在您系统的下载目录中存在一个名为 fullnames.txt 的文件,并且在您的主目录中存在一个同名文件。现在,您想用 ~/fullnames.txt 更新 ~/Downloads/fullnames.txt,但前提是后者较新。然后,在这种情况下,您将不得不使用 -u 命令行选项。

mv -u ~/fullnames.txt ~/Downloads/fullnames.txt

当您需要从 shell 脚本中做出此类决定时,此选项特别有用。

Q7.如何让 mv 发出它正在做什么的详细信息?

如果您希望 mv 输出信息来解释它究竟在做什么,那么请使用 -v 命令行选项。

mv -v [filename] [new_filename]

例如,以下屏幕截图显示 mv 发出一些有用的详细信息,说明它到底做了什么。

Q8.如何强制 mv 创建现有目标文件的备份?

您可以使用 -b 命令行选项执行此操作。以这种方式创建的备份文件将与目标文件同名,但会在其后附加波浪号 (~)。这是一个例子:

结论

正如您现在已经猜到的那样,就其提供的功能而言,mv 与 cp 和 rm 一样重要 - 毕竟重命名/移动文件也是基本操作之一。我们已经讨论了该工具提供的大多数命令行选项。所以你可以练习它们并开始使用命令。要了解有关 mv 的更多信息,请访问其 tee 命令。

©2015-2025 艾丽卡 support@alaica.com