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

如何批量移除文件名开头的0?现有方法存在问题且不支持子目录

批量移除文件名开头的0(支持子目录,仅删开头)

嘿,我太懂你这糟心事儿了——之前试的方法要么不分青红皂白把所有0都删了,要么根本管不到子文件夹里的文件。下面给你分Windows和Linux/macOS两种场景,给你精准解决的方案:

Windows 用PowerShell搞定

PowerShell的正则替换能力刚好能满足“只删开头0”的需求,还能递归遍历所有子目录:

打开PowerShell,导航到你的根文件夹(比如cd D:\你的文件夹路径),然后运行这个命令:

Get-ChildItem -Recurse -File | Rename-Item -NewName { $_.Name -replace '^0+', '' } -WhatIf
  • -WhatIf参数是预览模式,只会显示要修改的文件名,不会真的改名,确认没问题后删掉这个参数再运行就好。
  • 正则^0+的意思是:匹配文件名开头的一个或多个连续0,只替换这部分为空,文件名中间的0完全不受影响(比如000test01.txt会变成test01.txt)。

Linux/macOS 用bash脚本处理

如果你用的是类Unix系统,分两种情况:

方法1:用rename命令(推荐)

大部分Linux发行版(比如Debian/Ubuntu)和macOS(需要先通过brew安装rename)可以直接用这个递归命令:

find /你的根文件夹路径 -type f -exec rename 's/^0+//' {} +
  • 同样,如果你想先预览效果,可以加-n参数:rename -n 's/^0+//',确认没问题再去掉-n。
  • 正则s/^0+//和PowerShell里的逻辑一样,只干掉开头的连续0。

方法2:用mv+sed(兼容所有类Unix系统)

如果你的系统没有rename命令,用这个组合也能实现:

find /你的根文件夹路径 -type f -exec bash -c '
  for file do
    dir=$(dirname "$file")
    fname=$(basename "$file")
    new_fname=$(echo "$fname" | sed "s/^0\+//")
    mv "$file" "$dir/$new_fname"
  done
' bash {} +

这个脚本会先提取文件的目录和文件名,用sed替换开头的0,再重命名文件,同样支持递归子目录。

重要提醒

不管用哪种方法,强烈建议先备份文件,或者先用预览模式确认修改结果,避免误操作把重要文件改坏了~

内容的提问来源于stack exchange,提问作者arlind

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:21:01