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

如何批量移除不同文件名中格式统一的时间戳?

移除文件名中固定格式时间戳的快捷方法

嘿,这个需求我经常碰到,刚好有几个高效的方法能解决,分两种场景给你说清楚——一种是只处理特定日期的时间戳,另一种是批量清除所有符合格式的时间戳,不管日期是什么:

场景1:仅移除特定日期的时间戳(比如只处理20180424的)

假设你只想删掉文件名里带_20180424_的时间戳部分,下面是不同系统的操作方式:

Windows PowerShell 方案

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

Get-ChildItem -File | Rename-Item -NewName { $_.Name -replace '_20180424_\d{6}(\..*)?$', '$1' }

小解释:这个命令会遍历当前目录的所有文件,用正则匹配_20180424_后面跟着6位数字的时间部分,同时保留文件的扩展名(比如.txt)。如果你的文件没有扩展名,直接把命令改成-replace '_20180424_\d{6}', ''就行。

Linux/macOS Bash 方案

进入文件所在的终端目录,推荐用rename命令(Debian/Ubuntu默认自带perl版;macOS需要先通过brew install rename安装):

rename 's/_20180424_\d{6}(\..*)?$/$1/' *

要是不想额外安装工具,用循环+sed也能搞定:

for file in *; do
  new_name=$(echo "$file" | sed 's/_20180424_[0-9]\{6\}//')
  [ "$new_name" != "$file" ] && mv "$file" "$new_name"
done

场景2:移除所有符合格式的时间戳(不限日期)

不管日期是20180424还是20180423,只要是_YYYYMMDD_HHMMSS格式的时间戳都删掉,用下面的方法:

Windows PowerShell 方案

Get-ChildItem -File | Rename-Item -NewName { $_.Name -replace '_(\d{8})_(\d{6})(\..*)?$', '$3' }

小解释:正则_(\d{8})_(\d{6})会匹配任意下划线+8位日期+下划线+6位时间的组合,(\..*)?$用来捕获并保留文件扩展名。如果没有扩展名,替换后就自动去掉时间戳部分。

Linux/macOS Bash 方案

用perl版rename一步到位:

rename 's/_\d{8}_\d{6}(\..*)?$/$1/' *

同样,不用rename的话可以用循环:

for file in *; do
  new_name=$(echo "$file" | sed 's/_[0-9]\{8\}_[0-9]\{6\}//')
  [ "$new_name" != "$file" ] && mv "$file" "$new_name"
done

额外提醒

  • 操作前最好先备份文件,避免误删重要内容;
  • 如果需要处理子目录里的文件,PowerShell可以加-Recurse参数,Bash循环可以改成for file in **/*(需要先开启shopt -s globstar);
  • 文件名里有空格或特殊字符也不用担心,上面的命令都用了引号处理这种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:21