Linux rename: 批量修改文件名

通过 rename 快速修改文件名,Mac 和 CentOS 下命名版本不一样

Mac

Mac 下默认没有安装 rename 命令,通过 brew install rename 安装。

rename version : 1.601

创建几个测试文件

$ touch k8s_deploy.yaml k8s_ingress.yaml k8s_service.yaml
$ ls
k8s_deploy.yaml  k8s_ingress.yaml k8s_service.yaml
1
2
3

将扩展名 .yaml 修改为 .yaml.bak

$ rename 's/.yaml/.yaml.bak/' *.yaml
$ ls
k8s_deploy.yaml.bak  k8s_ingress.yaml.bak k8s_service.yaml.bak
1
2
3

再将扩展名改回来

$ rename 's/.yaml.bak/.yaml/' *.yaml.bak
$ ls
k8s_deploy.yaml  k8s_ingress.yaml k8s_service.yaml
1
2
3

CentOS

CentOS 默认的 util-linux 包已经带了 rename 命令

$ rename -V
rename,来自 util-linux 2.23.2
$ rpm -qf /usr/bin/rename
util-linux-2.23.2-59.el7_6.1.x86_64
1
2
3
4

将扩展名 .yaml 修改为 .yaml.bak

$ ls
k8s_deploy.yaml  k8s_ingress.yaml  k8s_service.yaml
$ rename .yaml .yaml.bak *.yaml
$ ls
k8s_deploy.yaml.bak  k8s_ingress.yaml.bak  k8s_service.yaml.bak
1
2
3
4
5

再将扩展名改回来

$ rename .yaml.bak .yaml *.yaml.bak
$ ls
k8s_deploy.yaml  k8s_ingress.yaml  k8s_service.yaml
1
2
3

FAQ

如果待修改的文件位于子目录中,可以结合 find 命令

$ find . -type f -name "*.yaml" -exec rename .yaml .yaml.bak {} \;
1

reference