在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/RHEL
rename
默认不递归子目录,如需递归,可结合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循环实现。如果有具体需求(如递归、特殊字符处理等),可以进一步调整命令!