在 Linux 系统上,包含有大量相同字段的文件名,想要把这些字段(中文字段)改成其他字段(数字或其他英文字段),因为某些程序的需要,不支持中文文件名,此时可以使用命令 rename 批量修改文件名。当文件内容中包含有大量相同字段,手动修改又比较浪费时间。此时,可以使用命令 sed 完成。

rename

在 Linux 系统中重命名文件,经常用到 mv 命令,批量重命名文件 rename 是最好的选择。

Linux 的 rename 命令有两个版本,一个是 c 语言版本的,一个是 perl 语言版本的,判断方法:输入 man rename

C 语言版本

1
rename 原字符串 新字符串 文件名

示例:

1
2
3
rename 第三阶段 3 *
# * 代表所有字符
# ?代表单个字符

Perl 语言版本

1
rename 's/原字符串/新字符串/' 文件名

示例:

1
2
3
4
rename 's/第三阶段/3/' *

# 把所有的文件名都以 txt 结尾
rename "s/$/.txt/" *

sed

Linux 下批量替换文件内容

1
2
3
4
5
6
7
# 针对单个文件
sed -i "s/查找字段/替换字段/g" 文件名

# 针对目录下的所有文件
sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
# r 表示递归
# l 表示 -files-with-matches

示例:

1
2
sed -i "s/www.baidu.com/baidu.com/g" file.config
sed -i "s/www.baidu.com/baidu.com/g" `grep www.baidu.com -rl /home`

参考链接

  1. linux下rename命令用法详解(重命名文件)
  2. rename
  3. 每天学习一个命令: rename 批量修改文件名
  4. linux下批量替换文件内容