如何在Unix系统中批量给指定扩展名文件添加相同文本重命名?
Unix下批量给特定扩展名文件追加字符串的方法
在Unix系统里完全可以实现这类批量重命名,下面是几种实用方案:
方法一:Bash原生循环(无需额外工具)
这是最通用的方案,所有Unix-like系统默认支持。直接遍历目标文件,通过字符串拆分拼接生成新名称:
for file in *.txt; do mv "$file" "${file%.txt}_renamed.txt" done
${file%.txt}是Bash的参数扩展语法,作用是去掉文件名末尾的.txt后缀- 拼接
_renamed.txt后就得到了目标文件名
方法二:使用rename命令(分两种版本)
不同发行版的rename工具语法略有差异,分两种情况:
Perl版rename(Debian/Ubuntu等常用)
支持正则表达式,写法更灵活:
rename 's/(.+)\.txt/$1_renamed.txt/' *.txt
- 正则
(.+)\.txt捕获文件名主体部分(不含扩展名),$1代表捕获到的内容 - 替换规则会把原文件名改成
[文件名主体]_renamed.txt
原生rename(RHEL/CentOS等常用)
语法更简洁,直接指定替换内容:
rename .txt _renamed.txt *.txt
这个命令会把所有.txt文件的后缀部分从.txt替换成_renamed.txt,刚好符合需求。
方法三:使用mmv工具(需提前安装)
如果系统没有mmv,可以通过包管理器安装(比如apt install mmv或dnf install mmv),用通配符实现更直观的重命名:
mmv '*.txt' '#1_renamed.txt'
#1对应通配符*匹配到的文件名主体部分- 直接拼接后缀即可完成重命名
内容的提问来源于stack exchange,提问作者TheWaterProgrammer
相关产品推荐
相关产品推荐

