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

适配带前导零的3位序号PDF文件的序列缺失检测脚本改造

检测带前导零的3位序号PDF文件序列缺失的脚本改造方案

当然可以实现!咱们直接把现有脚本的逻辑完全调整过来——原脚本是读取文件内容找缺失序号,和咱们要检测文件名序号的需求不匹配,所以咱们重新针对性写逻辑:

改造后的完整脚本

#!/bin/sh

# 初始化状态变量和缺失编号存储字符串
errfound=0
missing_numbers=""

# 筛选目录中符合格式的PDF文件,提取序号并按数字排序
sorted_nums=$(ls | grep -E '^[0-9]{3}\.pdf$' | sed 's/\.pdf$//' | sort -n)

# 检查是否存在符合条件的文件
start_num=$(echo "$sorted_nums" | head -n 1)
end_num=$(echo "$sorted_nums" | tail -n 1)

if [ -z "$start_num" ]; then
    echo "未找到任何带3位前导零的PDF文件(格式如001.pdf)"
    exit 0
fi

# 遍历从起始到结束的所有序号,验证对应文件是否存在
current_num=$start_num
while [ "$current_num" -le "$end_num" ]; do
    # 将数字格式化为带前导零的3位字符串
    formatted_num=$(printf "%03d" "$current_num")
    if [ ! -f "${formatted_num}.pdf" ]; then
        missing_numbers="${missing_numbers}${formatted_num} "
        errfound=1
    fi
    current_num=$((current_num + 1))
done

# 输出检测结果
if [ "$errfound" -eq 1 ]; then
    echo "检测到缺失的序列编号:"
    echo "$missing_numbers"
else
    echo "所有3位序号PDF文件序列完整,没有缺失!"
fi

exit 0

关键逻辑说明

  • 筛选目标文件:用grep -E '^[0-9]{3}\.pdf$'精准匹配文件名是「3位数字+.pdf」的文件,自动忽略其他格式的文件
  • 序号提取与排序:通过sed去掉.pdf后缀,再用sort -n做数字排序(避免字符串排序导致的010排在9前面的问题)
  • 自动识别序列范围:从排序后的序号里取第一个和最后一个,确定要检查的序列区间,不用手动设置起始值
  • 格式验证:用printf "%03d"把遍历的数字转换成带前导零的格式,确保和文件名格式一致,再检查文件是否存在

使用注意事项

  • 直接在PDF文件所在目录运行脚本即可,或者修改ls的路径为目标目录(比如ls /your/pdf/directory)
  • 脚本会自动跳过目录中不符合「3位前导零+pdf」格式的文件,不会影响检测结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:52:49