你對 Linux 作業系統還不熟悉嗎?如果是的話,像重新命名檔案和資料夾這樣的常見任務可能與你所熟悉的不同。但不用擔心。在 Linux 中重新命名檔案的概念與其他作業系統中的方式相似。
在這個教程中,你將學習在 Linux 中重新命名單個和多個檔案的多種方法,包括通過 GUI 和在終端中運行命令。
讓我們開始吧!
先備條件
在本教程中跟隨操作,請確保你具備以下條件:
- 本教程使用的是Ubuntu 18.04 LTS,但其他 Linux 發行版也適用。
- 一個具有sudo/administrator權限的帳戶。
使用檔案管理器在 Linux 中重新命名檔案
如果你習慣通過 GUI 管理檔案,讓我們從使用檔案管理器重新命名檔案開始這個教程。GUI 檔案管理器很方便,因為你可以清楚地看到檔案。Linux 中提供的其中一個檔案管理器是 GNOME 的前身檔案管理器 Nautilus。本教程演示了使用 Nautilus 檔案管理器重新命名檔案的方法。
Linux的其他檔案管理器包括Konqueror、Dolphin、Krusader、Thunar、Nemo檔案管理器和Sunflower檔案管理器。這些檔案管理器執行相同的任務,但重新命名檔案或目錄可能稍有不同。
啟動您的終端,然後執行以下命令以使用apt
套件管理器安裝Nautilus(install nautilus
),如果您的機器上尚未安裝它。sudo
命令以sudo/管理員權限執行命令。
重新命名單個檔案
在Nautilus中重新命名單個檔案只需點擊幾下,就像在Windows檔案總管中一樣。
要重新命名單個文件,打開Nautilus,右鍵單擊要重新命名的文件,然後選擇重新命名,如下所示。
此示例重點介紹了如何重命名文件,但是重命名文件和目錄的過程是相同的。

現在輸入新文件名以替換原始文件名,按Enter或點擊重新命名,就完成了。

使用Nautilus文件管理器重命名多個文件
與Windows一樣,Ubuntu為您提供了更多選項,以便一次重命名多個文件。
要重命名多個文件,選擇要重命名的所有文件,右鍵單擊其中任何一個,然後選擇重新命名。將出現彈出窗口,您可以在其中選擇要如何重命名所選文件。

下面,根據您希望如何重命名所選文件的方式,有兩個選擇。
- 使用模板重新命名 – 這允許您按增量重命名文件。
- 查找和替換文本 – 允許您查找並替換文件名中的某些文本。
使用模板重新命名文件
要使用模板重新命名文件,請選擇使用模板重新命名選項。
現在在空字段中輸入替換名稱以使用模板重命名文件,然後點擊+添加按鈕並從模板中選擇。對於此教程,請選擇第一個(1,2,3,4),然後點擊重新命名。此選項將在替換文件名後為每個文件添加遞增數字(Text1,Text2,…)。

注意到文件名已更改為Text,後跟遞增的數字。

在文件名中查找並替換單詞
要使用特定文件名重命名多個文件,請選擇查找並替換文本選項。
在現有文本字段中輸入文本,並在替換為字段中輸入替換文本,然後點擊重命名以替換文本。此選項查找並替換文件名中的特定文本。

現在,您可以看到您已將每個文件名中的單詞“Text”更改為“File”

使用mv
命令重命名文件
如果執行命令是您的偏好,而不是在 GUI 中導航,請準備好學習如何在終端中重命名文件。在 Linux 終端中重命名文件類似於在其他命令行環境(如 PowerShell)中執行此操作。您運行命令以使用目標文件名重命名原始文件名,就這樣。
重命名文件有兩種情況。第一種是從工作目錄重命名文件,第二種是通過指定完整路徑。請查看下面的mv
命令語法以重命名文件,其中source
是原始名稱,destination
是替換名稱。
使用mv
命令重命名單個文件
當您的心中仍然記憶猶新時,讓我們試著重新命名一個單一檔案。
為了示範如何重新命名單一檔案和目錄:
1. 啟動您的終端機,然後運行下面的一系列命令來創建一個目錄和兩個文本檔案。
2. 接下來,運行 ls
命令來列出工作目錄中的檔案。下面,您可以看到 file1.txt 和 file2.txt 存在於 ~/test 目錄中。

3. 運行以下任一個 mv
命令來將 file1.txt
重新命名為 file10.txt
。
重新命名目錄與重新命名檔案相同,像這樣:
mv ~/test ~/demo
。符號~
表示家目錄。
4. 最後,重新運行 ls
命令以列出工作目錄中的檔案。
下面,您可以看到檔案 file1.txt 現在已經重新命名為 file10.txt。

使用 For 迴圈重新命名多個檔案
如果你忙于其他任务,并想一次性重新命名所有文件,你需要使用像下面这样的for循环语句。
复制下面的代码,原样粘贴到你的终端中,然后按 Enter 键。下面的代码会扫描工作目录中的每个文本文件,并将文件重新命名为“File”后跟一个递增的数字。
将代码粘贴到终端中可以正常工作,但作为良好的实践,最好创建一个脚本文件来运行。
下面,您可以看到代码如何重新命名所有文件的示例。

使用 rename
实用程序重命名 Linux 中的文件
如果您在日常工作中需要重命名单个文件,那么 mv
命令就足够了。但如果您希望一次性重命名多个具有相同模式的文件呢?例如,重命名以某个特定单词(file)开头的文件。在这种情况下,安装 rename 实用程序更合适。
rename 实用程序可以重命名多个文件,更改文件名格式并覆盖文件。
要安装 rename 实用程序,请根据您所使用的 Linux 发行版运行以下任何命令。
您可以在下面看到 rename
命令的语法。
重命名多个文件
有了 rename
命令的语法,您现在可以重命名具有相同模式的文件。 rename
命令的好处在于您无需声明循环函数来重命名多个文件,就像在“使用 for 循环重命名多个文件”部分中所做的那样。
也许您想使用特定的单词重命名文件。如果是这样,请查看以下示例命令中的Perl正则表达式('s/file/myfile/'
)。 Perl正则表达式基于Perl编程语言定义字符串模式。
为了避免错误地重命名其他文件,在重命名之前通过添加-n
选项列出所有受影响的文件,如下所示。

现在运行以下任一rename
命令,将每个文本文件名中的单词file
替换为myfile
,位于工作目录或~/test/*.txt
目录内。
在Perl表达式('s/file/myfile/'
)中,s
表示替换,这意味着您正在重命名文件。请注意添加了-v
选项以返回命令重命名的文件。
下面,您可以看到文本文件中的每个“file”单词都被重命名为“myfile”。

rename
Command 如果您更喜欢重新命名所有文件,请在指定文件路径时去除文件扩展名,例如:
rename -v 's/file/myfile/' ~/test/*
更改文件扩展名
除了文件名外,rename
命令还可更改文件扩展名。也许您误将文件保存为错误的文件扩展名。在这种情况下,运行rename
命令时,您需要在Perl表达式中指定要更改的文件扩展名。
运行以下rename
命令,将~/test
目录中所有文件(*
)的扩展名从.txt
更改为.html
。Perl表达式中的$
符号匹配每个文件名的字符串结尾(.txt
),因此该命令仅更改.txt
文件扩展名。与重命名多个文件一样,添加-v
选项以列出命令所做的每个更改。
如果要删除所有文件扩展名,请在Perl表达式中删除替换字符串,如:
rename -v 's/.txt$//' *.txt
如下图所示,.txt扩展名已更改为.html

将文件名更改为大写和小写
除了错误的文件扩展名外,您可能还需要处理大小写不正确的文件名。也许您希望以大写形式查找文件,却不知道文件名实际上是小写的。
Linux 是區分大小寫的,所以讓我們確保每個檔案名稱的大小寫正確。大小寫是指區分小寫和大寫字母的方式。
執行以下其中一個 rename
命令,將工作目錄(*
)中所有小寫(a-z
)檔案名稱變為大寫(A-Z
),反之亦然。
您可以在下面看到更改檔案名稱大小寫的兩種結果。

替換和刪除檔案名稱中的空格
就像檔案名稱的大小寫一樣,如果檔案名稱中有空格,可能會難以找到檔案。讓我們通過將空格替換為一個字符或完全刪除空格來解決這個問題。
執行以下 rename
命令,將工作目錄中所有檔案名稱中的空格替換為底線(_
)。由於底線是一個 元字符,需要用反斜線(\\_
)進行轉義,以表示底線字面上的意義。元字符是在計算機程式中具有特殊含義的特殊字符。
注意 Perl 表达式中的 g
表示命令替换所有匹配项(空格),而不仅仅是第一个。
如下所示,该命令将所有空格替换为下划线。

为了删除文件名中的所有空格而不是用字符填充它们,请运行以下命令。
在下面的 Perl 表达式中,空格后的星号 (/ *
) 匹配文件名中的所有空格,而不仅仅是第一个。替换字符为空(//
),因此 rename
命令删除所有(g
)空格。
现在您可以看到每个文件名中的所有空格都已删除。

将文件名中的每个单词的首字母大写
如果您希望保留空格并将文件名中的每个单词的首字母大写,您将需要一个更复杂的 Perl 表达式。查看下面的示例命令。
下面的 Perl 表达式匹配单词边界中的任何单个字符 (\\w
),只要该字符不是句点或撇号 (?<![.'\\'']
)。然后,rename
命令将该字母转换为大写(u$&
)。
如下所示,文件名中的每个单词都以大写字母开头,同时保留文件扩展名不变。

结论
在本教程中,您已经学习了通过 GUI 和命令行终端来重命名 Linux 文件的多种方法。现在,您对如何一次性操作单个和多个文件的名称有了扎实的理解。
为什么不学习 Linux shell 脚本,并创建一个脚本来自动化 Linux 中的文件重命名呢?