V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
miaeLKK
V2EX  ›  程序员

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

  •  1
     
  •   miaeLKK · 2023-09-01 10:27:29 +08:00 · 1963 次点击
    这是一个创建于 485 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    20 条回复    2023-09-04 11:51:19 +08:00
    VensonEEE
        1
    VensonEEE  
       2023-09-01 10:30:38 +08:00
    你这要解析内容 ,简单点还是 Python 或者 WPF 吧
    dobelee
        2
    dobelee  
       2023-09-01 10:34:10 +08:00
    python 打包干嘛,直接跑就行。
    golang 文档这方面是弱势项,不建议。
    miaeLKK
        3
    miaeLKK  
    OP
       2023-09-01 10:49:18 +08:00
    @dobelee 不得装环境吗?我是想着别人没环境的也能用,不过好像确实 go 的库不多,而且混乱
    dq19871123
        4
    dq19871123  
       2023-09-01 10:55:19 +08:00
    一个作弊一点的方案是.net framework 2.0/3.5 ,Windows 自带了
    不过我不理解,打包 runtime 也不是什么麻烦的事,何必纠结这件事
    jones2000
        5
    jones2000  
       2023-09-01 11:01:48 +08:00
    每个文件格式都有对应的格式文档, 把文件读内存(_wfopen_s ....) ,自己解析不就完事了。一个一个文件格式对接。嫌麻烦就直接读文件上传给后台解析。
    Mithril
        6
    Mithril  
       2023-09-01 11:15:30 +08:00   ❤️ 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
        7
    aiqinxuancai  
       2023-09-01 11:18:32 +08:00
    Everything 了解一下
    oldboy627
        8
    oldboy627  
       2023-09-01 11:29:05 +08:00
    Everything meets your requirement.
    cslive
        9
    cslive  
       2023-09-01 11:30:20 +08:00
    Everything +1
    Frjpa
        10
    Frjpa  
       2023-09-01 11:48:08 +08:00
    everything 不满足要求么?
    loading
        11
    loading  
       2023-09-01 11:53:10 +08:00
    everything ,有一个 golang 的调用包,我还提交过一丁点代码,哈哈。
    NoOneNoBody
        12
    NoOneNoBody  
       2023-09-01 12:05:42 +08:00
    还可以 powershell
    只是,谁干得过 everything 啊
    Alias4ck
        13
    Alias4ck  
       2023-09-01 12:17:19 +08:00
    第一时间我想到了 find 的替代品 fd 不过是 rust 写的
    Alias4ck
        14
    Alias4ck  
       2023-09-01 12:26:43 +08:00
    噢你还要查找文本内容啊 那配合 go 写的 fzf 完美了 不过 doc 、docx 、xls 、xlsx 这些都是 OLE file format 你得自己写解析器了 pdf 就更加麻烦了 可能里面有图片、表格等或者 latex 公式,就我所了解的 pdf 解析工具来看 都不太行
    不过最近 meta 开源了一个识别论文 pdf 的模型和工具 https://github.com/facebookresearch/nougat
    busterian
        15
    busterian  
       2023-09-01 12:35:49 +08:00
    powergrep
    manasheep
        16
    manasheep  
       2023-09-01 13:34:34 +08:00
    AnyTXT Searcher 应该可以实现
    shijingshijing
        17
    shijingshijing  
       2023-09-01 16:32:07 +08:00
    @NoOneNoBody 口气别太大哟,试试 Agent Ransack ,Everything 依赖索引的,而且理论上是有可能有遗漏的,Agent Ransack 不会,它只会老老实实去查。
    someday3
        18
    someday3  
       2023-09-01 16:49:46 +08:00
    @manasheep 这位老兄推荐的这个确实可以,我用过。anytxt

    我觉得没必要造轮子,而且 anytxt 还有 ocr 的功能,对扫描版的 pdf 也能搜索。尤其这种软件很庞大的,从底层的扫描,索引构建,查询到用户界面,完全可以给 anytxt 提补丁。
    ikas
        19
    ikas  
       2023-09-02 22:14:28 +08:00
    body007
        20
    body007  
       2023-09-04 11:51:19 +08:00
    everything 的 golang 库,https://github.com/jan-bar/es
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:12 · PVG 02:12 · LAX 10:12 · JFK 13:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.