能在 windows 运行的查找文件的程序?(目前倾向 GoLang)

2023 年 9 月 1 日
 miaeLKK

PS:今天主题很少啊,本来想自己再查查,看没什么主题就和大家讨论下。让我去谷歌等无意义的回复的可以拜拜了

我想写个查找文件的程序,主要在 windows 运行,要能查找 doc 、docx 格式(包括文档中的表格)、xls 、xlsx 、pdf 和普通文本

windows 的话,是不是只能 exe 、bat 了?了解到 java 、python 都要打包环境,觉得可能写出来会比较大?(如果说的不对请指正)所以想用 GoLang 去写

GoLang 的话先是找到 unidoc ,但是收费的,放弃;然后找到个这个

https://pkg.go.dev/code.sajari.com/docconv

研究一阵没弄明白,按照指引还是报错。好像是下载后引用,没找到下载地方,有人用过吗?或者有什么好的方法?

2672 次点击
所在节点    程序员
20 条回复
VensonEEE
2023 年 9 月 1 日
你这要解析内容 ,简单点还是 Python 或者 WPF 吧
dobelee
2023 年 9 月 1 日
python 打包干嘛,直接跑就行。
golang 文档这方面是弱势项,不建议。
miaeLKK
2023 年 9 月 1 日
@dobelee 不得装环境吗?我是想着别人没环境的也能用,不过好像确实 go 的库不多,而且混乱
dq19871123
2023 年 9 月 1 日
一个作弊一点的方案是.net framework 2.0/3.5 ,Windows 自带了
不过我不理解,打包 runtime 也不是什么麻烦的事,何必纠结这件事
jones2000
2023 年 9 月 1 日
每个文件格式都有对应的格式文档, 把文件读内存(_wfopen_s ....) ,自己解析不就完事了。一个一个文件格式对接。嫌麻烦就直接读文件上传给后台解析。
Mithril
2023 年 9 月 1 日
不管你用什么语言,都需要 runtime 环境。不需要的无非是操作系统自带了,或者 CPU 自带了,比如汇编这种。但就是汇编你也需要个文件头。

Windows 的话,就 C++和.NET Framework 有自带的。你可以用这俩写。如果你想加快搜索速度,比如快到像 Everything 那样,那你无论如何也要用 Windows API ,那些都是 C++的。所以最简单的就是你用 C++做。但你要是不会用 QT 或者更古老的 MFC 这类东西,做 GUI 就比较麻烦。那就不如用.NET Framework ,GUI 的话 WPF 或者 WinForm 都行。虽然都是很老的技术了,但你做个小程序用用是没问题的。

其它的 GoLang 或者.NET Core/7 ,都可以做成 SelfContained 。就是把 runtime 一起打包进去。这种情况下你如果用 Java 也没啥差别,无非是把 JRE 一起打包,新版本的还可以 trim 。
但是 Java ,GoLang 这种做 GUI 更是离谱。.NET Core/7 你可以选择 Avalonia ,或者直接用 WebView2 套网页。WebView2 不需要打包浏览器本身,直接调用的系统组件,比 Electron 好一些。

既然你需要解析文档,那就先找个能用好用的文档解析库。再看他这库是什么语言你就用什么语言就行。大部分语言都能在 Windows 上运行的。做个简陋的 GUI 也都不是什么问题。
aiqinxuancai
2023 年 9 月 1 日
Everything 了解一下
oldboy627
2023 年 9 月 1 日
Everything meets your requirement.
cslive
2023 年 9 月 1 日
Everything +1
Frjpa
2023 年 9 月 1 日
everything 不满足要求么?
loading
2023 年 9 月 1 日
everything ,有一个 golang 的调用包,我还提交过一丁点代码,哈哈。
NoOneNoBody
2023 年 9 月 1 日
还可以 powershell
只是,谁干得过 everything 啊
Alias4ck
2023 年 9 月 1 日
第一时间我想到了 find 的替代品 fd 不过是 rust 写的
Alias4ck
2023 年 9 月 1 日
噢你还要查找文本内容啊 那配合 go 写的 fzf 完美了 不过 doc 、docx 、xls 、xlsx 这些都是 OLE file format 你得自己写解析器了 pdf 就更加麻烦了 可能里面有图片、表格等或者 latex 公式,就我所了解的 pdf 解析工具来看 都不太行
不过最近 meta 开源了一个识别论文 pdf 的模型和工具 https://github.com/facebookresearch/nougat
busterian
2023 年 9 月 1 日
powergrep
manasheep
2023 年 9 月 1 日
AnyTXT Searcher 应该可以实现
shijingshijing
2023 年 9 月 1 日
@NoOneNoBody 口气别太大哟,试试 Agent Ransack ,Everything 依赖索引的,而且理论上是有可能有遗漏的,Agent Ransack 不会,它只会老老实实去查。
someday3
2023 年 9 月 1 日
@manasheep 这位老兄推荐的这个确实可以,我用过。anytxt

我觉得没必要造轮子,而且 anytxt 还有 ocr 的功能,对扫描版的 pdf 也能搜索。尤其这种软件很庞大的,从底层的扫描,索引构建,查询到用户界面,完全可以给 anytxt 提补丁。
ikas
2023 年 9 月 2 日
body007
2023 年 9 月 4 日
everything 的 golang 库,https://github.com/jan-bar/es

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/969999

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX