社区
C++ Builder
帖子详情
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里?
jojojk
2009-12-18 11:08:01
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里?
如文件名为
A01B20090101C1256.txt
......
A24B20090818C2338.txt
如何要找A和B之间为02、08、13,B和C之间日期在20090501到20090831之间的文件,
我的硬盘里有500G多的文件,遍历文件的算法显然会很慢,怎么样快速匹配符合条件
的文件,求助代码或方法?
...全文
490
9
打赏
收藏
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里?
如何快速匹配一定格式文件名,搜索整个硬盘里符合条件的文件,并显示到列表里? 如文件名为 A01B20090101C1256.txt ...... A24B20090818C2338.txt 如何要找A和B之间为02、08、13,B和C之间日期在20090501到20090831之间的文件, 我的硬盘里有500G多的文件,遍历文件的算法显然会很慢,怎么样快速匹配符合条件 的文件,求助代码或方法?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 cd之后
显示
文件
名
,Linux命令_
文件
相关
最好的命令: --help1. 查看
文件
信息:lsls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令Linux
文件
或者目录名称最长可以有265个字符,“.”代表当前目录,“..”代表上一级目录,以“.”开头的
文件
为隐藏
文件
,需要用 -a 参数才能
显示
。参数含义-a
显示
指定目录下所有子目录与
文件
,包括隐藏
文件
-l以
列表
方式
显示
文件
的详细信息-...
window10系统如何
搜索
包含的字找到
文件
?
搜索
文件
名
中包含字段的详细方法介绍
1. 打开
文件
资源管理器:首先,点击任务栏上的“
文件
资源管理器”图标,或者使用快捷键Win + E打开。2. 定位
搜索
起点:确定你想从哪个位置开始
搜索
。如果你要
搜索
整个
系统,可以点击左侧的“此电脑”或直接在桌面上的
搜索
框开始
搜索
。3. 输入
搜索
关键词:在
文件
资源管理器的右上角,你会看到一个
搜索
框。在该框内输入你想要
搜索
的文字或关键词。4. 高级
搜索
选项:为了更精确地
搜索
包含特定字的
文件
,可以点击
搜索
框旁边的
搜索
图标(放大镜),展开更多
搜索
选项。
linux命令(查找
文件
/字符串
匹配
)
查找
文件
find -name '*record*' ================================================================================== Find是一个非常有效的工具,它可以遍历当前目录甚至于
整个
文件
系统来查找某些
文件
或目录. 主要选项: -name 按照
文件
名
查找
文件
-perm 按照
文件
权
全面提升电脑
文件
搜索
效率的技巧与工具
"Everything"是Windows操作系统中用于
文件
搜索
的一款工具软件,它的特点在于能通过
文件
名
快速
定位
文件
和目录,拥有极高的
搜索
效率和简洁直观的用户界面。本章将会详细介绍"Everything"的基本功能,以及它相较于传统
搜索
工具的独特优势。"Everything"的界面简单易用,仅通过很少的几步操作便能对
硬盘
进行深入的
搜索
和管理。其核心功能与运行机制更是让其在众多
文件
搜索
工具中脱颖而出。虽然"Everything"以其轻量级而著称,但还是提供了一些可调的选项来控制资源占用。
win11如何用数字或者汉字
搜索
到对应的
文件
?
快速
搜索
方法分享
Windows 11是微软最新推出的操作系统,其
搜索
功能强大而实用,windows11如何用数字或者汉字
搜索
到对应的
文件
及
文件
内容呢?下面一起来看看吧!第一步、在win11找到
文件
搜索
的输入框。第二步、输入关键字,然后按下箭头
搜索
。第三步、就能够看到
搜索
的
文件
了。进行文档
搜索
可以进行以下操作。1、打开电脑进入电脑桌面。2、点击左下角的windows开始按键。3、输入你要
搜索
的
文件
名
,就会跳出相应文档。4、点击你要的那个文档。1. Alt+Tab:在打开的应用之间
快速
切换。
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章