在 Linux 命令行中重命名文件和目录在 Linux 命令行中重命名文件和目录在 Linux 命令行中重命名文件和目录在 Linux 命令行中重命名文件和目录
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 Linux 命令行中重命名文件和目录

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在这个基本命令行教程中,了解在 Linux 终端中重命名文件和目录的各种方法。

如何在 Linux 终端中重命名文件和目录?您使用 mv 命令。

是的,与用于将文件和文件夹从一个位置“移动”到另一个位置的 mv 命令相同。

您可以在“移动文件和目录”时简单地指定文件和目录的新名称。

要重命名文件,请使用:

mv old_file new_file

同样,要重命名目录,请使用:

mv old_dir new_dir

听起来很容易,对吧?但我将在这里详细讨论文件重命名:

  • 向您展示重命名的实际示例

  • 显示通过组合 find 和 exec 命令批量重命名多个文件的示例

  • 讨论用于批量重命名文件的专用重命名实用程序

我们来一一看看。

使用 mv 命令重命名文件和目录

使用 mv 命令重命名同一目录中的文件:

mv file1.txt file2.txt

同样,您可以重命名同一位置的目录:

mv dir1 dir2

这是我重命名文件和目录的示例:

正如您所看到的,与 cp 命令不同,您不必使用递归选项来使用 mv 命令处理目录。

?
如果您尝试使用相同的名称重命名该文件,您会看到一个错误(显然)。

您还可以在将文件移动到另一个位置时重命名它:

mv old-file-name another_dir/new-file-name

在下面的示例中,我将名为 firefox-quiz.txt 的文件移至示例目录。在这样做的同时,我将其重命名为 quiz.txt。

我将其视为剪切粘贴操作。

?
虽然您可以将多个文件移动到另一个位置(mv file1 file2 file2 dir),但您不能使用 mv 重命名多个文件。为此,您必须采用我在以下部分中讨论的其他策略。

通过组合 mv、find 和 exec 命令重命名与某个模式匹配的多个文件

?
批量重命名此类文件时要格外小心。一步错误的举动就会导致无法挽回的不良结果。

find 命令用于根据文件名、类型、修改时间和其他参数在给定目录中查找文件。 exec 命令与 find 结合使用,对 find 命令的结果执行命令。

没有使用 find、exec 和 mv 命令的固定、标准结构。您可以根据需要组合它们。

假设您要重命名当前目录中以 .txt 结尾的所有文件,方法是在名称中添加 _old 。因此 file_1.txt 变为 file_1.txt_old 等。

find . -type f -name "*.txt" -exec mv {} {}_old ;

这只是一个示例,您的重命名要求可能会有所不同。此外,以上仅适用于不带空格的文件名。

专业提示:在处理这样的批量操作时,您可以巧妙地使用 echo 命令来查看将执行什么操作,而不是实际执行它。如果看起来不错,那就采取实际行动吧。

例如,首先查看哪些文件将被重命名:

find . -type f -name "*.txt" -exec echo mv {} {}_old \;

如您所见,实际上没有重命名任何文件。但是,如果您在没有回显的情况下运行上述命令,您将看到执行的操作是什么命令。

如果您觉得没问题,请删除 echo 命令并继续进行实际的重命名。

find . -type f -name "*.txt" -exec mv {} {}_old \;

我在 Efficient Linux at the Command Line 一书中学到了这个技巧。一本充满了这样的小宝石的优秀书。难怪它已成为我最喜欢的 Linux 书籍之一。

新书:命令行中的高效 Linux

非常棒的 Linux 书,有很多实用技巧。它填补了这一空白,即使对于经验丰富的 Linux 用户也是如此。您的收藏中必须有。

使用重命名命令轻松重命名多个文件

有一个名为 rename 的便捷命令行实用程序,可用于根据给定的 Perl 正则表达式模式批量重命名文件。

该实用程序不是 GNU 工具链的一部分,也不是预安装的。因此,您必须首先使用发行版的包管理器来安装它。

对于 Debian/Ubuntu,命令为:

sudo apt install rename

您可以通过以下方式使用它:

rename [options] perl_regex [files]

选项有:

  • -v:详细模式

  • -n :无操作,显示将被重命名的文件,但不重命名它们

  • -o:不覆盖

  • -f :强制覆盖现有文件

  • -s :不重命名软链接,而是重命名其目标

现在,让我们采用您在上一节中看到的相同示例。将 *.txt 重命名为 .txt_old。

rename 's/\.txt$/.txt_old/' **

我不打算在这里解释正则表达式。 ** 表示查看所有子目录中的所有文件。

正如您所看到的,它按预期工作。

?
在 Red Hat 和 Fedora 上,重命名命令是 C 实现,因此它可能具有不同的语法和行为。阅读更多相关内容。

结论

我希望您喜欢这个技巧,它可以帮助您学习在 Linux 命令行中执行基本任务。当然是针对那些想学习和使用命令行的人。桌面用户始终拥有用于此类任务的 GUI 工具。

如果您对 Linux 命令完全陌生,本系列将对您有很大帮助。

如果您有疑问或建议,请告诉我。

©2015-2025 Norria support@alaica.com