Shell给文件批量重命名

今天我有一个需求是要将某文件夹下所有文件开头的wp_去掉,网上很多答案都过时了,例如:

1
2
3
$ rename 'wp_' '' *.md
Bareword "wp_" not allowed while "strict subs" in use at line 1, in:
wp_

想要批量重命名可以这样写:

1
2
3
4
$ rename -n 's/^wp_//' *
rename(wp_cancel-domain-name-beian.md, cancel-domain-name-beian.md)
rename(wp_cloudreve_webdav_obsidian_synchronization.md, cloudreve_webdav_obsidian_synchronization.md)
rename(wp_down-epub-oreilly.md, down-epub-oreilly.md)

加上-n只会列出重命名前后的文件名对比,而不会真正重命名,方便你不断调整合适的命令写法。真正重命名时应该把-n去掉:

1
$ rename 's/^wp_//' *