按时间条件统计主目录下各子目录内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
相关产品推荐
相关产品推荐

