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

按时间条件统计主目录下各子目录内JPEG文件数量

统计指定时间段内子目录新增JPEG文件数量

方法一:Shell命令(适用于Linux/macOS)

直接用find、awk结合日期处理命令,一次性输出统计结果:

Linux版本

cd /path/to/programs
find . -maxdepth 2 -type f \( -name "*.jpg" -o -name "*.jpeg" \) | awk -v start="2024-01-01" -v end="2024-01-31" '
BEGIN {
    cmd = "date -d \"" start "\" +%s"; cmd | getline start_ts; close(cmd)
    cmd = "date -d \"" end "\" +%s"; cmd | getline end_ts; close(cmd)
}
{
    cmd = "stat -c %Y \"" $0 "\""; cmd | getline mtime; close(cmd)
    if (mtime >= start_ts && mtime <= end_ts) {
        split($0, parts, "/")
        dir = parts[2]
        count[dir]++
    }
}
END {
    printf "%-15s %s\n", "子目录", "新增文件数"
    printf "%-15s %s\n", "--------", "------------"
    for (dir in count) {
        printf "%-15s %d\n", dir, count[dir]
    }
}'

macOS版本(适配stat/date命令差异)

cd /path/to/programs
find . -maxdepth 2 -type f \( -name "*.jpg" -o -name "*.jpeg" \) | awk -v start="2024-01-01" -v end="2024-01-31" '
BEGIN {
    cmd = "date -j -f \"%Y-%m-%d\" \"" start "\" +%s"; cmd | getline start_ts; close(cmd)
    cmd = "date -j -f \"%Y-%m-%d\" \"" end "\" +%s"; cmd | getline end_ts; close(cmd)
}
{
    cmd = "stat -f %m \"" $0 "\""; cmd | getline mtime; close(cmd)
    if (mtime >= start_ts && mtime <= end_ts) {
        split($0, parts, "/")
        dir = parts[2]
        count[dir]++
    }
}
END {
    printf "%-15s %s\n", "子目录", "新增文件数"
    printf "%-15s %s\n", "--------", "------------"
    for (dir in count) {
        printf "%-15s %d\n", dir, count[dir]
    }
}'

使用说明:

  • 将/path/to/programs替换为你的实际主目录路径
  • 修改start和end变量为你的目标时间段(格式YYYY-MM-DD)
  • 命令会统计子目录中修改时间在指定区间的JPEG文件数量

方法二:Python脚本(跨平台,支持Windows/Linux/macOS)

如果需要跨平台运行,或者需要更灵活的逻辑,用Python脚本:

import os
import datetime

def count_new_jpegs(root_dir, date1, date2):
    start_date = datetime.datetime.strptime(date1, "%Y-%m-%d")
    # 包含date2当天的所有文件,所以结束时间设为date2的次日零点
    end_date = datetime.datetime.strptime(date2, "%Y-%m-%d") + datetime.timedelta(days=1)
    
    dir_counts = {}
    
    for dir_name in os.listdir(root_dir):
        dir_path = os.path.join(root_dir, dir_name)
        if not os.path.isdir(dir_path):
            continue
        
        count = 0
        for file_name in os.listdir(dir_path):
            if file_name.lower().endswith(('.jpg', '.jpeg')):
                file_path = os.path.join(dir_path, file_name)
                # 用修改时间统计,若要改用创建时间,替换为os.path.getctime
                mtime = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
                if start_date <= mtime < end_date:
                    count += 1
        
        if count > 0:
            dir_counts[dir_name] = count
    
    # 打印表格
    print(f"{'子目录':<15} {'新增文件数':<12}")
    print(f"{'-'*15} {'-'*12}")
    for dir_name, cnt in dir_counts.items():
        print(f"{dir_name:<15} {cnt:<12}")

# 配置参数
ROOT_DIR = "/path/to/programs"  # 替换为实际主目录路径
DATE1 = "2024-01-01"           # 起始日期(YYYY-MM-DD)
DATE2 = "2024-01-31"           # 结束日期(YYYY-MM-DD)

if __name__ == "__main__":
    count_new_jpegs(ROOT_DIR, DATE1, DATE2)

使用说明:

  • 修改ROOT_DIR、DATE1、DATE2为实际值
  • 脚本默认用文件修改时间统计,若需要统计创建时间,将os.path.getmtime替换为os.path.getctime(注意:Linux下ctime是文件属性变更时间,Windows下是创建时间)
  • 运行脚本后会直接输出格式化的表格结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:43:14