社区
C++ Builder
帖子详情
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里?
jojojk
2009-12-18 11:08:01
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里?
如文件名为
A01B20090101C1256.txt
......
A24B20090818C2338.txt
如何要找A和B之间为02、08、13,B和C之间日期在20090501到20090831之间的文件,
我的硬盘里有500G多的文件,遍历文件的算法显然会很慢,怎么样快速匹配符合条件
的文件,求助代码或方法?
...全文
536
9
打赏
收藏
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里?
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里? 如文件名为 A01B20090101C1256.txt ...... A24B20090818C2338.txt 如何要找A和B之间为02、08、13,B和C之间日期在20090501到20090831之间的文件, 我的硬盘里有500G多的文件,遍历文件的算法显然会很慢,怎么样快速匹配符合条件 的文件,求助代码或方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shiweifu
2010-01-30
打赏
举报
回复
先建立索引,再根据索引查找吧,GOOGLE DESKTOP就是这么做的,搜索速度基本是秒杀。
ydlchina
2010-01-30
打赏
举报
回复
机器并不能何人一样聪明,不过你可以将遍历的代码放在线程试试速度是否有提高
___NULL
2010-01-30
打赏
举报
回复
通配符识别,把你要识别的文件名做成一个列表,遍历磁盘文件,对比文件列表
也可以考虑 CCRUN 提的 Windows Search 服务的二次开发
// --- 通配符函数实现如下 -------------------
int FilenameMatch(char *pat, char *name)
{
int match,ndone;
char *cpp,*cpn;
cpp = pat;
cpn = name;
match = 1;
ndone = 1;
while (ndone)
{
switch (*cpp)
{
case '*':
// skip to next letter
cpp++;
// skip to next letter
cpn = strchr(cpn, *cpp);
if(cpn==NULL)
{
cpn = name;
while (*cpn)
cpn++;
}
break;
case '?':
cpp++;
cpn++;
break;
case 0:
if (*cpn != 0)
match = 0;
ndone = 0;
break;
default:
if (tolower(*cpp) == tolower(*cpn))
{
cpp++;
cpn++;
}
else
{
match = 0;
ndone = 0;
}
break;
}
}
return(match);
if ( true )
{
}
else
{
}
}
// --- 使用示范 -------------------
if ( FilenameMatch("*.exe", "filename.exe") == 1 )
{
// filename.exe 匹配 *.exe 结构
}
else
{
// 不匹配
}
lertulo
2010-01-29
打赏
举报
回复
windows 好像也在不揨為文件建立索引,用系統搜文件的時候,第一次也會慢,但是第二次搜的時候就會快很多,明顯與第一次不同。
ciadv.msc 就是做這個的。
但是我不知道怎麼做
宝龙哥
2009-12-19
打赏
举报
回复
先判断是不是.txt文件
之后判断字符位数是否和要求的一样
之后判断第一位和第4位等是不是a、b、c等
之后判断~~位是不是几位数字——
宝龙哥
2009-12-19
打赏
举报
回复
至于判断文件,就只是字符串的截取的问题了,很简单的
宝龙哥
2009-12-19
打赏
举报
回复
建立一个缓存文件,在第一次把大多数文件存入数据库,之后监视,当发现文件信息改变,如删除创建修改等就更新数据库,这样搜索磁盘就变成了搜索数据库,速度当然就奇快了。置于文件变化监视部分,以前用过一个VC搞的程序,只有十数K,监视效果完整而快速,系统中任何文件的细小变动都立即显示,且几乎看不出耗费什么系统资源,bcb应该也可以实现。
周药师
2009-12-19
打赏
举报
回复
[Quote=引用楼主 jojojk 的回复:]
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里?
如文件名为
A01B20090101C1256.txt
......
A24B20090818C2338.txt
如何要找A和B之间为02、08、13,B和C之间日期在20090501到20090831之间的文件,
我的硬盘里有500G多的文件,遍历文件的算法显然会很慢,怎么样快速匹配符合条件
的文件,求助代码或方法?
[/Quote]
最好在存文件的时候
多分几级一定规则命名的文件夹 将文件按照规律存入相依的文件夹
在查找的时候 首先在文件夹这里过滤部分文件 从而提高效率
ccrun.com
2009-12-18
打赏
举报
回复
遍历肯定慢。不知道Windows的Search服务是如何工作的,楼主可以搜索一下相关资料。
linux命令 ll
搜索
_Linux基础知识(4):
文件
搜索
命令
本文详细介绍了Linux系统中常用的
文件
搜索
命令,包括locate、whereis、which和find,以及字符串
搜索
命令grep。locate命令
快速
搜索
文件
,但需先用updatedb更新数据库。whereis和which主要针对系统命令。find命令则能根据多种条件查找
文件
,如
文件
名
、大小、修改时间等。grep用于在
文件
内容中
搜索
特定字符串。文章还提供了各种命令的参数示例和使用技巧。
Linxu学习——第4章
文件
搜索
命令
本文概述了Linux中locate
快速
搜索
文件
名
,whereis查找命令路径和帮助文档,which定位命令位置,以及find深入
搜索
文件
的命令特性。重点讲解了它们的优缺点和使用场景,以及grep在字符串
搜索
中的应用。
Ubuntu查找指令:find与grep
本文详细介绍了find和grep命令的功能、
格式
、主要参数以及应用技巧。find用于在目录中
搜索
文件
,支持多种查找条件,如
文件
名
、大小、权限等。grep用于在
文件
中
搜索
特定内容,支持正则表达式,可用于复杂文本
匹配
。
linux下全盘查找
文件
,linux下的查找
文件
命令find
本文介绍了Linux下find命令的使用方法,包括其基本
格式
、主要参数及应用技巧等内容。通过具体的例子,展示了如何根据
文件
名
、
文件
大小和最近修改时间等多种条件进行
文件
查找。
linux
文件
查找--locate和find命令详解
本文详细介绍了Linux系统中两种常用的
文件
查找工具:locate和find。locate利用索引数据库实现
快速
查找,而find则能按照多种条件进行精确
搜索
,包括
文件
名
、权限、大小、时间戳等。
C++ Builder
13,874
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章