在Linux中,可以使用rename命令来批量修改文件名。rename命令支持正则表达式,可以非常灵活地批量重命名文件。以下是几种常见的用法:
rename 's/原字符串/新字符串/' 文件匹配模式
s/原字符串/新字符串/:使用正则表达式替换文件名中的内容。文件匹配模式:可以是*(所有文件)或*.txt(特定扩展名的文件)等。.txt → .md)rename 's/\.txt$/.md/' *.txt
\.txt$ 匹配以 .txt 结尾的文件名。.md 替换为新的扩展名。rename 's/^/prefix_/' *
^ 匹配文件名开头。prefix_ 是添加的前缀。rename 's/$/_suffix/' *
$ 匹配文件名结尾。_suffix 是添加的后缀。rename 's/要删除的字符串//' *
例如,删除文件名中的old_:
rename 's/old_//' *
rename 'y/a-z/A-Z/' *
y/a-z/A-Z/ 将所有小写字母转换为大写。rename 's/ /_/g' *
g 表示全局替换(所有空格)。使用 -n 或 --dry-run 参数可以预览重命名效果(不实际执行):
rename -n 's/old/new/' *
rename(支持正则表达式,常用语法如上)。util-linux版本的rename,语法不同(更简单但不支持正则),可能需要安装Perl版本:
bash
sudo apt install rename # Debian/Ubuntu
sudo yum install prename # CentOS/RHELrename默认不递归子目录,如需递归,可结合find:
bash
find . -name "*.txt" -exec rename 's/\.txt$/.md/' {} \;mmv 或 for 循环)如果rename不可用,可以用以下方法:
mmv 工具mmv '*.txt' '#1.md'
for 循环for file in *.txt; do mv "$file" "${file%.txt}.md"; done
rename 是最强大的批量重命名工具,适合复杂场景。mv结合Shell循环实现。如果有具体需求(如递归、特殊字符处理等),可以进一步调整命令!