You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一条命令批量移除文件名的前n个字符

如何用一条命令批量移除文件名的前n个字符

嘿,我明白你的需求了——要批量去掉文件名开头固定数量的字符,刚好你的例子里前缀长度是固定的,下面分不同操作系统给你实用的命令方案:

Linux/macOS 终端方案

方法1:用rename命令(更简洁)

假设你需要去掉前25个字符(对应你例子里的Song-01-Artist-JohnDoe - 前缀长度),直接在文件所在目录运行:

rename 's/^.{25}//' *.mp3
  • 解释:^.{25}匹配文件名开头的任意25个字符,//表示把匹配到的内容替换为空,*.mp3指定要处理的文件类型。
  • 调整:把命令里的25换成你实际需要移除的字符数即可。

方法2:用for循环(更通用,适合没有rename命令的环境)

同样处理前25个字符:

for f in *.mp3; do mv "$f" "${f:25}"; done
  • 解释:${f:25}是bash的字符串截取语法,意思是从第25个字符索引开始(索引从0开始)截取文件名的剩余部分;mv命令负责重命名。
  • 测试建议:先把mv换成echo,预览新文件名是否正确:
    for f in *.mp3; do echo "$f" → "${f:25}"; done
    

Windows 系统方案

方案1:PowerShell(推荐,语法更直观)

打开PowerShell,切换到文件所在目录,运行:

Get-ChildItem *.mp3 | Rename-Item -NewName { $_.Name.Substring(25) }
  • 解释:Get-ChildItem *.mp3获取所有mp3文件,Substring(25)表示跳过前25个字符,保留后面的部分。
  • 测试建议:先把Rename-Item换成Select-Object预览结果:
    Get-ChildItem *.mp3 | Select-Object @{Name='OldName';Expression={$_.Name}}, @{Name='NewName';Expression={$_.Name.Substring(25)}}
    

方案2:CMD命令提示符

CMD需要开启延迟环境变量扩展才能实现,步骤如下:

  1. 打开CMD,切换到文件所在目录;
  2. 先执行开启延迟扩展的命令:
    setlocal enabledelayedexpansion
    
  3. 然后运行重命名命令:
    for %f in (*.mp3) do set "fname=%f" & ren "%f" "!fname:~25!"
    
  • 解释:!fname:~25!是CMD的字符串截取语法,意思是从第25位开始截取文件名;如果是写在批处理文件(.bat)里,要把%f改成%%f。

备注:内容来源于stack exchange,提问作者Fred Philip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:20:29