Linux批量修改文件名保留部分技巧,三种方法轻松搞定局部调整,高效Linux文件名局部修改,三招轻松实现批量操作

(拍大腿)各位老铁们!今天咱们来唠唠Linux里那个让人又爱又恨的操作——批量改文件名还要保留部分内容。就像给一百个娃改名字,既要保留姓氏又要换辈分,这事儿咋整?别慌,三大绝活包教包会!


一、​​基础操作:mv命令玩转局部修改​

举个栗子,手头有100个"2025报告_张三.docx"文件,想批量去掉下划线保留人名。用这个命令就能搞定:

bash复制
for file in *.docx; do mv "$file" "${file//_/ }"; done

​重点解析​​:

  • ${file//_/ }:这个魔法参数能把文件名里所有下划线替换成空格
  • ​保留数字部分​​:${file:0:4}能提取前4位,适合处理带年份的文件名

要是想给所有图片加日期前缀,试试这个:

bash复制
for img in *.jpg; do mv "$img" "20250430_$img"; done

(挠头)可能有兄弟问:"万一文件名里有空格咋办?"这时候记得给变量加引号,写成"$file"就不会 ***


二、​​进阶神器:rename命令精准手术刀​

遇到要保留中间某段内容时,就得请出正则表达式大佬了。比如把"产品A-规格123-库存50.txt"改成"规格123_库存50.txt":

bash复制
rename 's/产品A-//' *.txt

​三大实用场景​​:

  1. ​保留数字序列​​:rename 's/[^0-9]*//g' * 能删除非数字字符
  2. ​保留后缀名前缀​​:rename 's/(.*)\.txt/$1_backup.doc/' *.txt 转换格式同时保留主名
  3. ​复杂替换​​:rename 's/(2024)(.*)/$2_$1/' * 把开头的年份移到末尾

(扶眼镜)注意啦!部分系统要安装rename命令,Ubuntu用sudo apt install rename,CentOS用yum install prename


三、​​终极大招:find+sed组合拳​

当文件分散在不同文件夹时,这个组合能横扫千。比如要把所有子目录里的"草案_"开头的文件改成"终版_":

bash复制
find . -name "草案_*" -exec bash -c 'mv "$0" "${0/草案_/终版_}"' {} \;

​高阶技巧​​:

  • ​保留特定字符​​:用sed 's/[^a-zA-Z]//g'过滤非字母字符
  • ​批量编号​​:结合printf实现自动编号:
bash复制
count=1; for file in *.mp4; do mv "$file" "视频_$(printf "%03d" $count).mp4"; ((count++)); done

(敲黑板)重要提醒!操作前建议先加-n参数测试,比如rename -n 's/old/new/' *能预览修改效果不执行


方法对比表

方法适用场景优势注意事项
mv循环简单增删改无需安装新工具处理复杂规则吃力
rename正则表达式复杂替换一行命令搞定语法因系统而异
find+sed多级目录批量操作支持过滤文件类型命令结构较复杂

个人观点时间

实测这些年,给各位萌新划个重点:

  1. ​新手首选mv循环​​,虽然写着麻烦但最不容易翻车
  2. ​正则苦手用mmv​​,像mmv "2025*" "2026#1"这种直观操作更友好
  3. ​重要文件先备份​​,别问我怎么知道的(都是泪)

未来可能会出智能重命名工具,但现在这三大招足够应付90%的日常需求。记住,批量操作就像炒菜,火候到了自然香,千万别贪快把锅烧糊喽!