3
头图

0.基础环境

类别:笔记本
型号:中国长城 UF712
硬件平台:飞腾处理器(ArmV8 指令集)
系统:银河麒麟操作系统 V10 SP1(2203)
关键词:
信创,麒麟系统,linux,PKS,银河麒麟,飞腾,arm64,arm,everything,fsearch,find

1. 需求背景

当我们电脑中有许多文件资料时,我们需要根据文件名或者文档内容搜索相关资料。在windows下,除了我们常见的系统自带的搜索,我们大家另外用得最多的便是一个叫everything的软件,本文试图为大家在麒麟操作系统下找到一个相对可用的解决方案,以供日常使用参考。
图片.png

2.麒麟系统自带的搜索

2.1文件管理器中的搜索(推荐)

使用win+s唤出系统搜索
图片.png
从检索的内容来看,支持文件内容搜索(先打开索引)
图片.png
经测试支持docx,xlsx,pptx,pdf以及正常的文件文件(限资料在个人主文件夹)
图片.png

注:如果个人资料不在主文件夹,建议使用fsearch或recoll,手动增加索引位置,如kmre的数据位置file:///var/lib/kmre/data/kmre-1000-long/Android/data等。

直接使用系统文件资源管理器搜索,但仅限于文件名搜索。
图片.png

2.2命令搜索

2.2.1 find(仅支持文件名查询)

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法格式:

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

图片.png

2.2.2 grep(仅支持查询文本文件内容)

grep仅支持文本文件内容搜索
从文件内容查找匹配指定字符串的行:
$ grep “被查找的字符串” 文件名
例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件
grep “thermcontact” /.in

从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名

查找时不区分大小写:
$ grep –i “被查找的字符串” 文件名

查找匹配的行数:
$ grep -c “被查找的字符串” 文件名

从文件内容查找不匹配指定字符串的行:
$ grep –v “被查找的字符串” 文件名

2.2.3 which(path路径命令查找)

which 命令的作用是,在 PATH 变量指定的路径中搜索可执行文件的所在位置。它一般用来确认系统中是否安装了指定的软件。

2.2.4 whereis与locate

whereis 命令主要用于定位可执行文件、源代码文件、帮助文件在文件系统中的位置。whereis 命令还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

whereis 命令查找速度非常快,这是因为它根本不是在磁盘中漫无目的乱找,而是在一个数据库中(/var/lib/mlocate/)查询。这个数据库是 Linux 系统自动创建的,包含有本地所有文件的信息,并且每天通过自动执行 updatedb 命令更新一次。也正是因为这个数据库要每天才更新一次,就会使得 whereis 命令的搜索结果有时候会不准确,比如刚添加的文件可能搜不到。

locate 命令跟 whereis 命令类似,且它们使用的是相同的数据库。但 whereis 命令只能搜索可执行文件、联机帮助文件和源代码文件,如果要获得更全面的搜索结果,可以使用 locate 命令。

2.2.6 find与grep结合使用

注意:find先通过文件名过滤,再使用grep检索文本内容
从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name “*.log” | xargs grep “ERROR”
例子:从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行
find . -name “*.in” | xargs grep “thermcontact”

3.fsearch(everything的替代,仅限文件名,推荐)

FSearch是一个免费的开源文件搜索工具 根据GNU GPL v2许可发布。 该应用程序非常快,可以在GNU / Linux系统上使用,它是用C编写的,基于GTK + 3。
这个应用程序 允许用户创建和维护自己的文件数据库,并在Linux上更有效地查找文件。第一次执行将对文件和目录建立索引,实时进行搜索, 当您输入字母和字符时,将立即处理并显示搜索查询。

3.1通过应用市场或者Flatpak方式安装

通过命令行安装,也可以在应用市场安装

sudo apt install fsearch -y #安装fsearch

或者使用flatpak安装

flatpak install flathub io.github.cboxdoerfer.FSearch #通过flatpak也是装的最新版(实验时0.2.3,但官方提示因flatpak权限问题有些许功能限制

图片.png
打开后的效果如下,搜索结果秒出。与windows下的everything使用方法基本一致。
图片.png
图片.png

3.2 通过源代码编译安装

github:https://github.com/cboxdoerfer/fsearch
官方指南:https://github.com/cboxdoerfer/fsearch/wiki/Build-instructions

3.2.1 基础环境

sudo apt install git build-essential meson itstool libtool pkg-config intltool libicu-dev libpcre2-dev libglib2.0-dev libgtk-3-dev libxml2-utils -y

3.2.2 代码下载与编译

git clone -b 0.2.3 https://github.com/cboxdoerfer/fsearch.git #仅拉取0.2.3,此时0.2.3是最新版本,大家在玩时根据需要调整
cd fsearch #进入代码目录
meson builddir #创建构建文件夹
ninja -C builddir install #编译并安装,在安装时,会提示输入密码,按要求输入正确的密码即可

图片.png
图片.png
图片.png

3.2.3 运行

此时开始菜单中并没有,在命令行中执行fsearch直接运行,效果如下
图片.png
运行whereis fsearch得出其在/usr/local/bin/fsearch,值得注意的事,这本来就是绿色文件了。
图片.png

3.2.4 为fsearch创建菜单

cd /usr/share/applications #进入菜单目录 
sudo gedit fsearch.desktop #可以先行执行sudo apt-get install gedit ,安装好gedit,也可以在应用市场装好

在编辑界面,填入以下内容

[Desktop Entry]
Name=fsearch
Comment=
GenericName=Search Everything
Exec=/usr/local/bin/fsearch %F
Icon=fsearch
Type=Application
StartupNotify=true
Categories=Utilities
MimeType=text/plain;inode/directory;application/x-code-workspace;
Actions=new-empty-window;
Keywords=search;

[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/local/bin/fsearch%F
Icon=fsearch

保存后,再打开开始菜单就可以找到fsearch了
图片.png

4.recoll(支持文件内容与文件名搜索,支持格式较多,推荐)

Linux 桌面全文搜索引擎,Recoll根据文档的内容和文件名查找文档。Recoll将为MS-Word文档编制索引,它还将通过友好且强大的界面帮助你进行搜索,并且只需单击两次即可在右侧页面打开PDF副本,磁盘上几乎没有隐藏的东西。Recoll基于功能强大的Xapian搜索引擎库,该库提供了功能强大的文本提取层和完整但易于使用的Qt图形界面。

sudo apt-get install recollgui recoll -y

图片.png

5.TextSeek文本搜

官方应用市场首页推荐,我最近试了试,确实很强。支持我们主流的文档格式
https://www.textseek.net/(官网)显示需要购买,我们直接在应用市场安装使用。暂时没有看到有什么限制
图片.png
图片.png
如果可以一直免费用的话,这一款推荐大家首选使用(用于检索文档与内容)

6.写在最后

经过各类对比与使用,麒麟系统自带的全局搜索足够好用,快捷,检索效果也还不错。

  1. 当所有资料在个人主文件夹时,推荐大家使用官方自带的资料和文件检索功能(记得打开需要搜索的文件夹的相关索引)
  2. 当资料在个人主文件夹外时,如kmre(移动微信接收的文件为例)路径/var/lib/kmre/data/kmre-1000-long/Android/data这个,则更推荐fsearch和recoll

祝大家国庆快乐。。。

麒麟系统专栏:
https://segmentfault.com/blog/kylinos
文章发表在SegmentFault
联系邮箱:1179611323@qq.com
群:662512340 文章中相关资料均可通过群文件获取或向群主请求协助
发行日志:
20221005 首发
20221007 补充当资料不在个人主文件夹的时候,系统搜索有限制,需要使用fsearch或recoll等进行手动增加位置。
20221008 补充TextSeek软件
20230909 增加fsearch最新版本编译(编译时,使用0.2.3版本)


码上世界
79 声望290 粉丝

码农极客,2004年接触Linux世界。爱技术的IT的男