侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux rename命令教程:批量重命名文件和目录(附实例详解和注意事项)

在Linux系统中,批量重命名文件通常是一项频繁的任务,rename命令提供了一个快速有效的方式来完成这项工作。这个强大的命令可以通过模式匹配和正则表达式来修改文件名。

Linux rename命令介绍

rename命令是用于批量重命名文件的工具。它可以根据用户指定的替换条件来更改文件名。这个条件通常是一种正则表达式,非常适合对文件名进行复杂的修改。

Linux rename命令适用的Linux版本

rename命令在许多Linux发行版中都是可用的,如Ubuntu, Fedora, Debian等。但是,某些发行版,比如CentOS可能没有预安装这个命令。

  • 对于CentOS 7,您可以使用yum来安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install prename
  • 对于CentOS 8,您可以使用dnf来安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install prename

Linux rename命令的基本语法

语法格式:

rename [options] 's/old/new/' files

Linux rename命令的常用选项或参数说明

选项说明
-v显示详细的重命名信息
-n演示重命名操作但不实际执行
-f覆盖现有文件
-h显示帮助信息
-V显示版本信息

Linux rename命令实例详解

实例1:简单的重命名操作

将所有.txt文件的扩展名改为.md:

[linux@bashcommandnotfound.cn ~]$ rename 's/\.txt$/.md/' *.txt

实例2:演示模式下的重命名

查看重命名操作的效果,而不实际执行:

[linux@bashcommandnotfound.cn ~]$ rename -n 's/\.txt$/.md/' *.txt

实例3:覆盖文件时的重命名

如果目标文件名存在,使用-f选项强制覆盖:

[linux@bashcommandnotfound.cn ~]$ rename -f 's/\.txt$/.md/' *.txt

实例4:将文件名中的空格替换为下划线

[linux@bashcommandnotfound.cn ~]$ rename 's/ /_/' *

实例5:将文件名转为小写

[linux@bashcommandnotfound.cn ~]$ rename 'y/A-Z/a-z/' *

实例6:添加前缀

给所有JPEG文件添加前缀"vacation_":

[linux@bashcommandnotfound.cn ~]$ rename 's/^/vacation_/' *.jpeg

实例7:去除数字

删除文件名中所有的数字:

[linux@bashcommandnotfound.cn ~]$ rename 's/[0-9]//' *

实例8:批量修改文件扩展名

将所有.jpg文件改名为.jpeg:

[linux@bashcommandnotfound.cn ~]$ rename 's/\.jpg$/.jpeg/' *.jpg

实例9:使用正则表达式分组

将文件名"photo1.jpg"重命名为"1_photo.jpg":

[linux@bashcommandnotfound.cn ~]$ rename 's/(photo)(\d+)/$2_$1/' photo1.jpg

实例10:详细模式的重命名

详细输出每次重命名的信息:

[linux@bashcommandnotfound.cn ~]$ rename -v 's/\.txt$/.md/' *.txt

实例11:递归重命名

递归地在子目录中重命名所有.txt文件为.md:

[linux@bashcommandnotfound.cn ~]$ find . -type f -name '*.txt' -exec rename 's/\.txt$/.md/' {} +

实例12:安全地避免覆盖文件

在重命名时检查目标文件名是否已存在,以避免数据丢失:

[linux@bashcommandnotfound.cn ~]$ rename -n 's/\.txt$/.md/' *.txt

实例13:将日期从文件名移至开头

例如,将"report-2021-01-01.doc"改为"2021-01-01-report.doc":

[linux@bashcommandnotfound.cn ~]$ rename 's/(.*?)-(\d{4}-\d{2}-\d{2})/$2-$1/' *.doc

实例14:删除文件名中的特定单词

删除文件名中的"sample"单词:

[linux@bashcommandnotfound.cn ~]$ rename 's/sample//' *

实例15:将所有PNG文件加上序号

为避免重复,在所有.png文件前加上序号:

[linux@bashcommandnotfound.cn ~]$ rename 'our $i = 0; s/^/sprintf("%04d-", $i++)/e' *.png

Linux rename命令的注意事项

  • 确保在使用rename前理解其正则表达式和模式匹配的规则,以避免非预期的重命名结果。
  • 使用-n选项来预览结果,确认无误后再执行实际的重命名操作。
  • 使用-v选项可以查看每次重命名的具体细节,有助于调试和记录。
  • 注意文件名中的空格和特殊字符,这些可能会影响正则表达式的匹配。
  • 如果出现bash: rename: command not found,请根据上述安装步骤进行安装。
0

评论区