# filescanner **Repository Path**: lijunyi/filescanner ## Basic Information - **Project Name**: filescanner - **Description**: 用 C/C++ && go 编写的文件 MD5 校验和扫描工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-09 - **Last Updated**: 2025-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FileScanner 一个基于Rust实现的文件扫描和MD5计算工具。 ## 功能特点 - 扫描指定目录下的文件,计算文件的MD5值 - 忽略小于指定大小的文件 - 支持多线程并行处理,提高扫描速度 - 将文件信息存储到SQLite数据库中 - 检查数据库中记录的文件是否存在 - 查询MD5相同的文件,按文件从大到小排序 ## 安装 ```bash # 克隆仓库 git clone cd filescanner # 编译 make build # 安装(可选) make install ``` ## 使用方法 ### 扫描文件 ```bash # 基本用法 filescanner scan -d <目录路径> # 指定最小文件大小 filescanner scan -d <目录路径> -s 1M # 指定工作线程数 filescanner scan -d <目录路径> -w 8 ``` ### 检查数据库中的文件 ```bash filescanner check ``` ### 查询MD5相同的文件 ```bash filescanner query ``` ### 命令行参数 - `-d, --directory `: 要扫描的目录路径 - `-s, --size `: 忽略小于指定大小的文件(例如:100k, 1M),默认为100k - `-w, --workers `: 指定工作线程数,默认为CPU核心数的1.5倍 ## 输出格式 ### 扫描模式 ``` [当前文件序号/总文件数目] 当前文件绝对路径 [Skip] ``` 如果文件被忽略(例如已在数据库中或计算MD5失败),则在输出末尾显示`[Skip]`。 ### 检查模式 ``` [D或者N] [当前文件序号/总文件数目] 当前文件绝对路径 ``` - `D`: 表示文件不存在,已删除数据库记录 - `N`: 表示文件存在,无操作 ### 查询模式 ``` 文件路径|MD5值|文件大小(字节) ``` 输出所有具有相同MD5值的文件,并按文件大小从大到小排序。 ## 数据库结构 文件信息存储在SQLite数据库中,包含以下字段: - `file_path`: 文件的绝对路径(主键) - `file_key`: 文件的MD5值 - `file_size`: 文件大小(字节) ## 依赖项 - clap: 命令行参数解析 - md-5: MD5计算 - rusqlite: SQLite数据库操作 - walkdir: 目录遍历 - num_cpus: 获取CPU数量 - rayon: 并行计算 - anyhow & thiserror: 错误处理 - regex: 正则表达式处理 - dirs: 获取用户目录 ## 许可证 MIT