使用 Linux Shell 批量重命名文件

绮梦之旅 2021-09-08 ⋅ 26 阅读

在日常工作中,我们经常需要对文件进行重命名。如果只有几个文件,手动一个个修改文件名或许还能接受,但如果文件数量很多,那么手动操作将变得非常耗时耗力。幸运的是,我们可以使用 Linux Shell 脚本来批量重命名文件,大大提高效率。

Shell 重命名命令

在 Linux 中,我们可以使用 mv 命令来完成文件的重命名操作。mv 命令的基本语法如下:

mv [options] source destination

其中,source 表示需要重命名的文件名或路径,destination 表示重命名后的文件名或路径。

使用通配符进行批量重命名

在 Shell 脚本中,我们可以使用通配符来匹配一定规则的文件,从而实现批量重命名。常用的通配符有以下几种:

  • *:匹配任意长度的任意字符;
  • ?:匹配任意一个字符;
  • [abc]:匹配字符 a、b 或 c 中的任意一个;
  • [!abc]:匹配任意一个不是字符 a、b 或 c 的字符;
  • [0-9]:匹配任意一个数字;
  • [a-z]:匹配任意一个小写英文字母。

下面是几个常见的批量重命名示例:

  1. 将所有文件后缀名为 .txt 的文件改为 .md
mv *.txt *.md
  1. 将所有以 file 开头的文件加上前缀 new_
for file in file*; do mv "$file" "new_$file"; done
  1. 将文件名中的空格替换为下划线 _
for file in *; do mv "$file" "${file// /_}"; done

上面的示例只是几个简单的案例,使用通配符我们可以根据实际需要进行灵活的批量重命名操作。

正则表达式批量重命名

如果需要更加精确地匹配文件名,我们可以结合正则表达式来进行批量重命名。Linux 的 rename 命令是一个很好的工具,它可以通过正则表达式实现文件的批量重命名。

首先,我们需要确保系统已经安装了 rename 命令。在大多数 Linux 发行版中,rename 工具被称为 perl-rename 或者 prename。可以使用以下命令安装:

# Ubuntu / Debian
$ sudo apt-get install rename

# CentOS / Fedora
$ sudo yum install rename

安装完成后,我们可以使用 rename 命令来批量重命名文件。

以下是一些常用的正则表达式批量重命名示例:

  1. 将所有文件名中的大写字母改为小写字母,保留原文件名:
rename 'y/A-Z/a-z/' *
  1. 将文件名中的日期格式 YYYYMMDD 改为以 - 分隔的格式 YYYY-MM-DD
rename 's/(\d{4})(\d{2})(\d{2})/$1-$2-$3/' *
  1. 将所有以 .bak 结尾的文件名去除后缀:
rename 's/\.bak$//' *.bak

使用正则表达式可以实现更加灵活、精确的批量重命名操作,只需根据实际需要编写合适的正则表达式即可。

总结

本文介绍了使用 Linux Shell 批量重命名文件的方法。通过使用通配符或正则表达式,我们可以快速、高效地对文件进行批量重命名操作。根据实际需求,选择合适的方式来重命名文件,将可以大大提高工作效率。

希望本文能帮助到有需要的读者,如果你有任何问题或建议,欢迎留言讨论!


全部评论: 0

    我有话说: