在本文中,我们将学习如何使用各种工具在 Linux 中一次重命名多个文件,本文提供的所有示例都在 Ubuntu 中进行了测试,但是它们适用于任何 Linux 操作系统,让我们直接开始吧!
介绍
我们都知道使用mv命令可以在 Linux 和类 Unix 操作系统中批量重命名或移动文件和目录。
但是,该mv命令不支持一次性批量重命名文件,它一次只能重命名一个文件,如果您想一次重命名多个文件,您会怎么做?
还有一些其他命令可用于在 Linux 中批量重命名文件。
在 Linux 中一次重命名多个文件
重命名一堆文件可能有许多命令和实用程序,在撰写本文时,我知道有 7 种不同的方法可以批量重命名文件。
方法 1 – 使用 mmv 批量重命名文件
mmv命令适用于Linux和标准通配符的类Unix操作系统,用于移动,复制,追加和批量重命名文件,它在基于 Debian 的系统的默认存储库中可用。
要在 Debian、Ubuntu、Linux Mint 和 Pop OS 上安装 mmv,请运行以下命令:
$ sudo apt-get install mmv
假设您在当前目录中有以下文件。
$ ls
a1.txt a2.txt a3.txt
现在您要将所有以字母开头的文件重命名"a"为"b". 当然,您可以在几秒钟内手动完成此操作。
但是试想一下,如果您有数百个文件并想重命名它们?这是一个相当耗时的过程,这就是mmv命令有用的地方。
要将所有以字母开头的文件重命名"a"为"b",只需运行:
$ mmv a * b # 1
让我们检查文件是否已重命名。
$ ls
b1.txt b2.txt b3.txt
如您所见,所有以字母开头的文件"a"(即a1.txt, a2.txt, a3.txt)都被重命名为b1.txt, b2.txt, b3.txt。
解释
在上面的例子中,第一个参数 ( a*) 是'from'模式,第二个参数是'to'模式 ( b#1)。
按照上面的例子,mmv 将查找任何以字母开头的文件名,'a'并根据第二个参数即'to'模式重命名匹配的文件。
我们使用通配符,例如‘*’,‘?’和‘[]‘来匹配一个或多个任意字符。请注意,您必须对通配符进行转义,否则它们将被 shell 扩展并且 mmv 将无法理解它们。
的‘#1′在‘to’图案是一个通配符索引。它匹配‘from’模式中找到的第一个通配符。一个‘#2′在‘to’模式将匹配第二通配符等。
在我们的例子中,我们只有一个通配符(星号),所以我们写了一个#1. 并且,哈希符号也应该被转义,此外,您也可以用引号将模式括起来。
您甚至可以将具有特定扩展名的所有文件重命名为不同的扩展名,例如,要将当前目录中的所有.txt 文件重命名为.doc文件格式,只需运行:
$ mmv *.txt #1.doc
这是另一个例子,假设您有以下文件。
$ ls
abcd1.txt abcd2.txt abcd3.txt
要替换的第一次出现abc与xyz在当前目录下的所有文件,你会怎么做?
简单的。
$ mmv '*abc*' '#1xyz#2'
请注意,在上面的示例中,我将模式括在单引号中。
让我们检查一下“abc”是否真的被“xyz”替换了。
$ ls
xyzd1.txt xyzd2.txt xyzd3.txt
文件abcd1.txt、abcd2.txt和abcd3.txt已重命名为xyzd1.txt、xyzd2.txt和xyzd3.txt。
mmv 命令的另一个显着特点是您可以只打印输出而不是使用-n如下选项重命名文件。
$ mmv -na * b # 1
a1.txt -> b1.txt
a2.txt -> b2.txt
a3.txt -> b3.txt
通过这种方式,您可以在重命名文件之前简单地验证 mmv 命令实际上会做什么。
有关更多详细信息,请参阅手册页。
$ man mmv
方法 2 – 使用重命名实用程序批量重命名文件
在重命名工具将通过更换代以他们的名义表达的第一次出现重命名指定的文件。
大多数类 Unix 操作系统中都预装了 rename 命令,如果默认情况下不可用,请运行以下命令在基于 Debian 的系统上安装它:
$ sudo apt install rename
例如,我在当前目录中有以下文件。
$ ls
abcd1.txt abcd2.txt abcd3.txt
让我们更换的第一次出现abc与xyz地方找到,运行:
$ rename 's/abc/xyz/' *
现在,验证是否已使用ls命令进行了更改。
$ ls
xyzd1.txt xyzd2.txt xyzd3.txt
有时,您可能只打印输出而不是重命名文件,如果是这样,请使用-n标志来显示哪些重命名会发生而不执行它们:
$ rename -n 's/abc/xyz/' *
rename(abcd1.txt, xyzd1.txt)
rename(abcd2.txt, xyzd2.txt)
rename(abcd3.txt, xyzd3.txt)
如您所见,上面的命令没有进行任何更改,而只是显示会发生哪些重命名。
即使操作会使用-f如下标志覆盖现有文件,您也可以强制重命名任务。
$ rename -f 's/abc/xyz/' *
如果您不想覆盖文件,您可以简单地将它们转换为大写或小写字母(反之亦然)以防止“已存在”错误。
要将所有文件名转换为小写,请执行以下操作:
$ rename 'y/a-z/A-Z/' *
让我们检查是否已进行更改。
$ ls
ABCD1.TXT ABCD2.TXT ABCD3.TXT
是的,文件名中的字母已从小写更改为大写。
同样,要将文件名转换为小写,请运行:
$ rename 'y/A-Z/a-z/' *
我们也可以删除文件名中的所有空行。例如,我有以下文件。
$ ls
Clouds of Sunset.mp3
要删除上述文件名中的所有空格,请运行:
$ rename "s/ *//g" *
现在,文件名没有任何空格。
$ ls
CloudsofSunset.mp3
用下划线替换空格:
$ rename 's/s+/_/g' *
您可能想要更改文件扩展名,但不想重命名文件名,这也是可能的。以下命令会将所有*.txt文件重命名为*.doc.
$ rename 's/.txt$/.doc/' *.txt
使用ls命令验证更改:
$ ls
abcd1.doc abcd2.doc abcd3.doc
要删除与.txt匹配的所有文件中的扩展名,请运行:
$ rename 's/.txt$//' *.txt
有关更多详细信息,请参阅手册页。
$ man rename
方法 3 – 使用 renameutils 重命名文件
该renameutils是一组程序,旨在批量重命名文件和目录,更快,更容易。
Renameutils 由以下五个程序组成:
qmv(快速移动),qcp(快速复制),imv(交互式移动),ICP(交互式复制),deurlname(删除网址)。
在 Linux 中安装 renameutils
Renameutils 在大多数 Linux 发行版的默认存储库中可用。要在基于 Arch 的系统上安装它,请启用社区存储库并运行:
$ sudo pacman -Syu renameutils
在基于 Debian 的系统上:
$ sudo apt install renameutils
现在,让我们看一些例子。
1.qmv
qmv 程序将在默认文本编辑器的目录中打开文件名,并允许您编辑它们。
我在名为“wljslmz”的目录中有以下三个文件。
$ ls wljslmz/
abcd1.txt abcd2.txt abcd3.txt
要重命名“wljslmz”目录中的文件名,只需执行以下操作:
$ qmv wljslmz/
现在,根据需要更改文件名,您将在编辑文件名时看到实时预览。
或者,您可以 cd 进入目录并简单地运行'qmv'.
打开文件后,您将看到两列,如下面的屏幕截图所示。
使用 qmv 批量重命名文件
左列显示源文件名,右列显示目标名称(编辑后将获得的输出文件名)。
现在,根据需要重命名右侧的所有输出名称。
使用 qmv 批量重命名文件
重命名文件名后,保存并退出文件。
最后,您将看到以下输出:
Plan is valid.
abcd1.txt -> xyzd1.txt
abcd2.txt -> xyzd2.txt
abcd3.txt -> xyzd3.txt
Regular rename
abcd1.txt -> xyzd1.txt
abcd2.txt -> xyzd2.txt
abcd3.txt -> xyzd3.txt
现在,使用'ls'命令检查是否实际进行了更改:
$ ls wljslmz/
xyzd1.txt xyzd2.txt xyzd3.txt
看?所有文件都被重命名,不仅仅是文件,renameutils 还会重命名目录名称。
如果您不想以双列格式编辑文件名,请使用以下命令仅显示目标文件列。
$ qmv -f do wljslmz/
其中,'-f'指的是format和'do'指的是destination-only。
现在,您将只看到目标列,那是我们进行更改的列。
仅在 qmv 中显示目标文件列
完成后,保存并关闭文件。
有关更多详细信息,请参阅手册页。
$ man qmv
2.qcp
qcp 程序的工作方式与 qmv 类似,但只是复制文件而不是重命名它们,在这种情况下,您将获得同一文件的两个实例,这意味着它将保留原始文件和重复文件。
$ qcp wljslmz/
重命名右侧列出的文件名,保存并退出文件。最后,使用 ls 命令验证所做的更改:
$ ls wljslmz/
abcd1.txt abcd2.txt abcd3.txt xyzd1.txt xyzd2.txt xyzd3.txt
有关更多详细信息,请参阅手册页。
$ man qcp
3.imv
imv 程序允许我们以交互方式重命名文件名,显然,它不适用于批量重命名。您只能一一重命名文件。
$ imv wljslmz/abcd1.txt
根据需要编辑文件名,然后按 ENTER 重命名。
有关更多详细信息,请参阅手册页。
$ man imv
4. ICP
icp 程序与 相同imv,但它复制文件而不是移动它们。
例子:
$ icp wljslmz/abcd1.txt
有关更多用例和命令,请参阅手册页。
$ man icp
我不知道为什么开发人员添加了这两个实用程序,而我们可以使用mv和cp命令来做同样的事情。
5. 门名
该deurlname程序删除URL编码的字符(例如%20表示空间)从文件名,一些程序,例如w3m,倾向于将这些字符编码在保存的文件中。
您可以使用此工具清理从 Internet 下载的文件名。
看看下面的文件。
$ ls
omg% 20ponnu% 20ily% 20kannu.mp3
文件名中有一些特殊字符和数字,如果你清理它,只需运行:
$ deurlname omg% 20ponnu% 20ily% 20kannu.mp3
现在,看看文件名是如何改变的。
$ ls
omg ponnu ily kannu.mp3
文件名干净且可读。
有关更多详细信息,请参阅手册页。
$ man deurlname
方法 4 – 使用 vimv 一次重命名多个文件
顾名思义,Vimv是一个命令行实用程序,可使用Vim编辑器批量重命名文件,当然,您可以通过更改$EDITOR环境变量的值来更改编辑器。
要安装 Vimv,请 git clone 存储库:
$ git clone
$PATH例如,将 vimv 二进制文件复制到您的/usr/local/bin/.
$ sudo cp vimv/vimv /usr/local/bin/
最后,使其可执行:
$ sudo chmod +x /usr/local/bin/vimv
现在转到目录并运行以下命令来编辑文件名。
$ vimv
您将在 Vi 编辑器中看到文件名,按i切换到交互模式并像在 Vi 编辑器中编辑文本一样编辑文件名。完成后,按ESC键并键入:wq以保存并退出。
方法 5 – 使用 Emacs 批量重命名文件
如果您的系统安装了 Emacs 编辑器,您可以按照以下步骤轻松进行批量重命名。
打开您的 Emacs 编辑器。按下Alt+x并输入以下内容,然后按ENTER 切换到wdired-mode(“可写目录编辑器模式”的缩写)。
$ dired
输入/home/sk/wljslmz包含要重命名的文件的目录(例如)的路径并按下ENTER键。然后,按Ctrl+x和Ctrl+q切换到读写模式。现在,重命名文件。完成后,按Ctrl+c和Ctrl+c(两次)保存更改。要中止更改,请按Ctrl+c 和Ctrl+k。
看?一次重命名多个文件非常简单。
方法 6 – 使用 Thunar 文件管理器批量重命名文件
默认情况下,Thunar 文件管理器具有内置的批量重命名选项。
Thunar 在大多数 Linux 发行版的默认存储库中可用。
要在基于 Arch 的系统上安装它,请运行:
$ sudo pacman -S thunar
在 Fedora、RHEL、CentOS、AlmaLinux、Rocky Linux 上:
$ sudo dnf install thunar
或者,
$ sudo yum install thunar
在 openSUSE 上:
$ sudo zypper install thunar
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt-get install thunar
安装后,您可以从菜单或应用程序启动器启动批量重命名实用程序,要从终端启动它,请使用以下命令:
$ thunar -B
这就是批量重命名的样子。
Thunar 批量重命名实用程序
单击加号并选择要重命名的文件列表,批量重命名可以重命名文件的名称、文件的后缀或文件的名称和后缀。
Thunar 目前支持以下批量重命名器:
插入日期或时间插入或覆盖编号删除字符搜索和替换大写小写
当您从选项列表中选择这些条件之一时,您将在“新名称”列中看到更改的预览,如下面的屏幕截图所示。
使用 Thunar 批量重命名文件
选择条件后,单击重命名文件选项以重命名文件。
您还可以通过选择两个或多个文件从 Thunar 中打开批量重命名器。选择文件后,按F2或右键单击并选择Rename。
方法 7 – 使用 KRename 重命名文件列表
KRename 是一个批处理文件重命名器,它可以根据一组表达式重命名文件列表,它允许您通过简单地添加数字序列或更改大小写来重命名大量文件。
KRename 是专门为 KDE 发行版设计并默认安装的,您也可以在其他 Linux 发行版上安装它。
例如,要在 Fedora 上安装 KRename,只需运行:
$ sudo dnf install krename
从应用程序启动器或菜单启动 KRename 应用程序,并在文件部分添加所有要重命名的文件。
在 KRename 中添加文件
在目标部分,确保您选择了“重命名输入文件”选项。
选择重命名输入文件选项
在插件中,您可以选择您选择的任何插件,在重命名文件时提供各种标签。
KRename 插件部分
在最后一节中,您可以选择要使用的重命名方案,您将在底部看到基于您选择的方案的预览,确定所选选项后,单击“完成”按钮重命名文件。
使用 Krename 批量重命名文件
重命名的文件将保存在同一位置。
KRename 是一个功能丰富的重命名工具,重命名文件时它有很多选项,大多数选项都是不言自明的。
方法 8 – 使用智能文件重命名器重命名多个文件和文件夹
Smart File Renamer 是一个图形程序,可以一次重命名多个文件。使用智能文件重命名,您只需点击几下鼠标即可轻松快速地重命名文件和目录,它是支持 Linux、macOS 和 Windows 的跨平台应用程序,与其他程序不同,这是适当的。免费版本只有有限的功能。
Smart File Renamer 可用作 snap 包,您可以使用以下命令安装它:
$ sudo snap install smart-file-renamer
安装后,从菜单或应用程序启动器启动它,添加要重命名的文件和目录,然后单击底部的重命名按钮。
智能文件重命名器
它支持许多用于批量重命名的规则和过滤器,只需在应用程序窗口的右侧选择它们,然后点击重命名按钮。
结论
在本文中,我们介绍了 7 种在 Linux 中批量重命名文件的方法,我们提供了命令行和图形程序来一次性重命名多个文件,只需选择适合您的那一款即可完成工作。
本文来自蝴蝶落泪投稿,不代表胡巴网立场,如若转载,请注明出处:https://www.hu85.com/364566.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxxxx@qq.com 举报,一经查实,本站将立刻删除。