文件和目录是操作系统的基石。作为普通用户,我们每天都要与文件和目录打交道,为了更好地组织文件,我们经常会重命名文件或将文件从一个位置移到另一个位置。当然,我们可以使用图形用户界面(GUI)来执行这些操作。不过,由于 mv 命令功能丰富,大多数 Linux 用户更喜欢使用它。
在本文当中,我们将通过实践演示学习 mv 命令的基础知识。mv 命令用于重命名或移动文件和目录,初学者可以在日常使用 Linux 系统时使用这些示例。
mv 命令的语法与其他 Linux 命令类似。 它分为两个部分:选项和参数
mv [OPTIONS] <SOURCE> <DEST>
mv [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIR>
在上述语法中,方括号[]代表可选参数,而角括号<>代表必选参数。

mv 命令最基本的用途是重命名文件,让我们试试如何重命名当前目录下的文件。
使用 touch 命令创建一个示例文件:
touch file-1.txt
使用 mv 命令重命名文件,如下所示:
mv file-1.txt file-2.txt
使用 ls 命令验证文件是否已成功重命名:

有时,我们想知道哪些文件或目录被重命名了。在这种情况下,我们可以使用 -v 选项启用 "详细 "模式。
为了理解这一点,让我们使用 "verbose" 模式重命名文件:
mv -v file-2.txt file-1.txt

在上面的输出中,我们可以看到,现在 mv 命令显示了重命名信息。
与文件类似,我们可以使用 mv 命令重命名目录。为了更清楚地理解,首先需要新建一个名为 test 的目录:
mkdir -v test
使用 mv 命令重命名该目录:
mv -v test rtest

很多时候,为了更好地组织文件,我们会将文件移动到单一目录下。例如,将所有音频文件保存在一个目录中是非常常见的做法。
当然,我们可以多次使用 mv 命令来实现这一目的。不过,随着文件数量的增加,这个过程很快就会变得非常耗时。不过,为了节省时间,我们可以使用 mv 命令的另一种语法。
通过创建几个文件和一个新目录来了解一下:
touch 1.mp3 2.txt 3.dat
mkdir misc
使用以下命令将所有这些文件移到 misc 目录:
mv -v 1.mp3 2.txt 3.dat misc

需要注意的是,要使用这种替代语法,目录必须已经存在,而且必须是命令的最后一个参数。
和文件一样,我们也可以使用 mv 命令一次移动多个目录。让我们通过一个简单的例子来了解这一点。
首先,使用 mkdir 命令创建几个目录:
mkdir dir-1 dir-2 dir-3 dir-4
让我们把这些目录都移到 dir-4 目录中:
mv -v dir-1 dir-2 dir-3 dir-4

从上面的输出中,可以看到我们已经移动了所有目录。
默认情况下,mv 命令会覆盖目标文件。有时,我们希望禁用这一默认行为,以避免数据丢失。在这种情况下,我们可以使用 -n 选项。
要理解这一点,首先创建一个示例文件:
touch file-2.txt
尝试使用下面的命令来覆盖它:
mv -v -n file-1.txt file-2.txt

在这里可以看到使用-v参数后没有显示任何信息,这表明 file-2.txt 没有被覆盖。
在上一个示例中,我们看到了如何禁用文件覆盖。不过,有时我们希望以安全的方式覆盖文件。在这种情况下,我们可以在交互模式下使用 mv 命令。在这种模式下,mv 命令会显示警告信息,并在覆盖文件前等待用户确认。
mv -v -i file-1.txt file-2.txt

就像其他 Linux 命令一样,我们可以用 "y "表示继续,或用 "n "表示放弃操作。
在前面的示例中,我们看到了如何使用交互模式覆盖文件,但当我们要覆盖大量文件时,这种方法并不实用。不过,我们不应在未经验证的情况下执行覆盖操作,因为用户可能会意外覆盖较新的文件。在这种情况下,我们可以使用 -u 选项,只有当源文件比目标文件新时才执行移动操作。
为了理解这一点,让我们更新一下源文件的时间戳:
touch -t 202506201000 file-1.txt
ls -l file-1.txt

上图显示使用了 touch 命令的 -t 选项来设置 file-1.txt 文件的旧时间戳。
把目标文件的时间戳更新为当前时间:
touch file-2.txt
最后,让我们尝试使用 -u 选项覆盖目标文件:
mv -v -u file-1.txt file-2.txt

从输出中,我们可以看到使用-v参数后没有显示任何信息,这表明 file-2.txt 没有被覆盖。
在前面几个例子中,我们看到了如何以更安全的方式覆盖目标文件。mv 命令还提供了一个选项,允许我们使用 --backup 选项指定备份策略,即在覆盖目标文件前对其进行备份。
touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt
在这里,我们使用了编号备份策略,该策略在备份文件名中使用增量编号。为了理解这一点,让我们多执行几次这两条命令并检查输出结果:
touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt
touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt
touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt

通过本文的实践演示,相信你已经掌握了 mv 命令的核心技巧——既能安全重命名文件目录,又能高效移动数据资源。记住它的两大黄金法则:
"移动即组织,重命名即规范"
⚠️ 重要提示
-i 交互模式避免意外覆盖--backup 为关键文件留退路-u 仅更新旧版本文件