如何拆分以'-'分隔的文件名字符串 提取两个ID与时间戳
文件名三段内容提取实现方案
你的文件名固定以单个-作为三段内容的分隔符,各段长度不固定的场景下,不需要写复杂正则,直接按分隔符做字符串切分就能拿到对应内容,切分后第1段为第一个ID,第2段为第二个ID,第3段为时间戳。以下是不同常用环境的可直接复用的实现方式:
Windows批处理脚本实现
适合不想装额外环境、直接在Windows资源管理器目录下跑脚本处理的场景,代码如下:@echo off setlocal enabledelayedexpansion :: 遍历当前目录下所有文件 for %%f in (*) do ( set "fullname=%%~nf" :: 按-切分取三段内容 for /f "tokens=1,2,3 delims=-" %%a in ("!fullname!") do ( set "first_id=%%a" set "second_id=%%b" set "ts=%%c" :: 下方替换为你需要执行的文件修改逻辑即可,以下为打印验证示例 echo 提取结果 - 第一个ID:!first_id! 第二个ID:!second_id! 时间戳:!ts! ) ) pausePython实现
适合需要做复杂后续修改操作的场景,依赖Python环境,代码如下:import os # 替换为你的文件存储目录绝对/相对路径 target_path = "." for file in os.listdir(target_path): file_full_path = os.path.join(target_path, file) if not os.path.isfile(file_full_path): continue # 去掉文件后缀,如果文件名本身无后缀可省略该行 file_name = os.path.splitext(file)[0] # 切分文件名,做长度校验避免异常文件报错 split_res = file_name.split("-") if len(split_res) != 3: print(f"异常文件名跳过:{file}") continue first_id, second_id, ts = split_res # 下方替换为你的自定义修改逻辑,以下为打印验证示例 print(f"提取结果 - 第一个ID:{first_id} 第二个ID:{second_id} 时间戳:{ts}")Linux Shell实现
适合Linux服务器环境下批量处理,直接在目标目录执行即可:#!/bin/bash for file in ./* do if [ -f "$file" ]; then # 提取纯文件名、去掉后缀 filename=$(basename "$file") name_no_ext=${filename%.*} # 按-切分取三段内容 first_id=$(echo "$name_no_ext" | cut -d '-' -f1) second_id=$(echo "$name_no_ext" | cut -d '-' -f2) ts=$(echo "$name_no_ext" | cut -d '-' -f3) # 下方替换为自定义修改逻辑,以下为打印验证示例 echo "提取结果 - 第一个ID:$first_id 第二个ID:$second_id 时间戳:$ts" fi done
注意:批量处理前建议先小范围测试提取结果,确认和预期一致后再执行修改操作,避免误改文件。
内容的提问来源于stack exchange,提问作者martin wotterman
相关产品推荐
相关产品推荐

