Redian新闻
>
Linux 中的模糊文件搜索 | Linux 中国

Linux 中的模糊文件搜索 | Linux 中国

科技
 
导读:像 fzf 和 fzy 这样的现代工具将 Linux 终端中的文件搜索提升到了一个新的水平。     
本文字数:4151,阅读时长大约:6分钟

https://linux.cn/article-15937-1.html
作者:Sreenath
译者:ChatGPT

像 fzf 和 fzy 这样的现代工具将 Linux 终端中的文件搜索提升到了一个新的水平。

在 Linux 命令行中,如何 搜索文件🔗 learnubuntu.com:443?你可以使用 find 命令🔗 linuxhandbook.com:443。这是标准答案,没有问题。

通常,你键入带有搜索参数的命令,按回车键,然后它会显示搜索结果。

你可以通过模糊搜索来提升终端中的文件搜索体验。

模糊搜索是一种近似搜索算法或技术。在这种搜索中,通过名称搜索指定位置的文件,并实时显示结果给用户。

模糊搜索在网络搜索引擎中很受欢迎,用户开始输入术语后,它会开始显示与该术语相关的结果。

在本文中,我将讨论两个命令行工具,它们可以让你在 Linux 中执行模糊搜索:

◈ fzf:模糊查找工具
◈ fzy:模糊选择工具

fzf:Linux 中的模糊查找工具

fzf 是一款可用于 Linux 的模糊搜索工具,你可以通过它进行交互式文件搜索。

在 Ubuntu 中安装 fzf,打开终端并运行以下命令:

  1. sudo apt install fzf

虽然 fzf 本身可以正常工作,但最好与其他工具配合使用,以充分发挥其功能。

使用 fzf

打开终端并运行:

  1. fzf

这将打开一个 fzf 提示符,在当前工作目录中搜索文件。

为 fzf 应用边框

你可以使用 --border 选项为 fzf 应用边框,有多种边框可用,如 rounded(圆角)、sharp(尖角)等。

  1. fzf --border=rounded


应用背景和前景颜色

使用颜色属性,你可以为 fzf 设置 ANSI 颜色,可以作为背景、前景或两者都设置。

  1. fzf --color="bg:black,fg:yellow"

你可以串联这些选项,使 fzf 在视觉上更加美观。

现在,让我展示一些 fzf 模糊搜索的实际用法。

使用 fzf 在 Bash 历史中进行搜索

当然,Bash 历史记录中有 CTRL+R 的反向搜索功能。但如果你想使用 fzf 来获得更好的外观,可以运行以下命令:

  1. history | fzf

使用 fzf 结合 tree 命令

tree 命令🔗 linuxhandbook.com:443 会列出文件和目录,并显示它们的层级关系。

使用 fzf 结合 tree 命令可以帮助你找到特定文件的绝对路径。

  1. tree -afR /home/$USER | fzf

💡 上述命令会调用 tree 并以递归方式列出包括隐藏文件在内的所有文件(-a)。同时,-f 选项告诉 tree 列出完整路径。

在 fzf 中预览文件

有时,如果你可以获得你搜索的文件的小型预览,那会很有帮助。

幸运的是,fzf 提供了一个预览选项。你可以使用 --preview 来访问它。我在这里使用 find 命令使其更加有用。

  1. find /home/$USER -type f | fzf --preview 'less {}'

在这里,当你滚动浏览结果时,它将使用 less 显示文本文件。

🚧 如果你使用其他命令如 ls 等,请不要使用 -l 等选项,因为这将显示额外的详细信息(文件权限)。这些额外的详细信息会破坏 fzf 预览所需的格式。在使用预览功能时,输入到 fzf 的应该只是文件名。

如果你已安装了 bat,也可以使用它来预览文件。

  1. find /home/$USER -type f | fzf --preview 'bat --color always {}'

使用 bat 作为 FZF 预览功能的文本查看器

对于 Ubuntu 用户,可以使用 batcat 来调用 bat。因此运行:

  1. find /home/$USER -type f | fzf --preview 'batcat --color always {}'

💡 为这些命令创建别名🔗 linuxhandbook.com:443,这样你就不需要反复输入它们。

从任何地方使用 fzf 进入任何目录(高级技巧)

这比以前要复杂一些。在这里,你不能直接将 fzf 和 cd 连接在一起,因为它们是不同的进程。

你可以创建一个别名并使用以下命令:

  1. cd $(find /home/$USER -type d | fzf)

或者,你可以按照下面解释的方法进行操作。

为此,你可能需要在 bashrc 中添加一个函数。让我将这个函数称为 finder。现在请添加以下行到你的 bashrc 中。

  1. finder() {
  2. local dir
  3. dir=$(find required/location/to/search/and/enter -type d | fzf)
  4. if [[ -n "$dir" ]]; then
  5. cd "$dir" || return
  6. fi
  7. }

现在,你应该 输入路径🔗 itsfoss.com,其中包含你要搜索并进入的目录。

例如,我已经使用 /home/$USER 替换了该部分,表示我要从任何位置进入我的主目录中的任何目录。

保存你的 bashrc 文件后,要么重启终端,要么运行以下命令:

  1. source ~/.bashrc

之后,你可以在终端上运行 finder 命令,一旦找到要进入的目录,按回车键即可。

将选择内容复制到剪贴板

到目前为止,你已经了解了如何使用 fzf,它提供了搜索结果或预览。

现在,如果你想要复制某个项目的位置,你不必手动执行此操作。也有相应的解决方案。

首先,确保你已经安装了 xclip

  1. sudo apt install xclip

然后像这样将其传递给 xclip

  1. fzf | xclip -selection clipboard

这将复制你按下回车键的那些行到剪贴板上。

其他用途

正如我之前所说,你可以使用任何涉及大量文本,并希望交互式搜索特定内容的命令。

◈ cat ~/.bashrc | fzf - 在 Bashrc 文件中搜索
◈ lsblk | fzf - 在锁定设备列表中搜索
◈ ps -aux | fzf - 在进程列表中搜索

另一个选择:Fzy,模糊选择器

与 fzf 不同,fzy 是一个模糊选择器,它会根据输入提供一个菜单供你选择。

例如,如果你将 fzy 与 ls 命令一起使用,它将给你提供一个类似菜单的界面。

默认情况下,它会显示十个条目。

使用 fzy 进入目录

与 fzf 类似,你也可以使用 fzy 进入当前工作目录中的目录:

  1. cd $(find -type d | fzy)

使用任何编辑器打开文件

或者使用你喜欢的编辑器打开文件:

  1. nano $(find -type f | fzy)

附加内容:自定义文件和图像预览

下面的命令将在 Ubuntu 中打开一个专门的自定义提示符,用于模糊搜索,你可以通过滚动来预览文本文件。

  1. find /home/$USER -type f | fzf --color="bg:black,fg:yellow" --preview 'batcat --color always {}' --preview-window=bottom

为了方便访问,可以在你的 bashrc 文件中为此创建一个别名。

或者在使用 timg 命令行图像查看器时,在 fzf 中进行图像预览并滚动。使用以下命令进行安装:

  1. sudo apt install timg

🚧 请注意,图像查看器无法正确显示图像,因为这不是 fzf 预览的主要目的。

  1. fzf --preview 'timg -g 200x100 {}' --preview-window=right:90

对于那些喜欢折腾的人,可以尝试对此部分进行优化。

现代化的替代方案

大多数 Linux 命令都是从 UNIX 时代继承下来的。它们虽然老旧,但功能如预期。但这并不意味着它们不能改进。

我的意思是,你不需要重新发明轮子,但你总是可以努力改进轮子。

像 fzf 和 fzy 这样的现代化工具将 Linux 终端中的文件搜索提升到了一个新的水平。以下是一些其他有趣的命令行工具。

我尝试给出了这些模糊搜索工具的一些实际示例。希望你对它们感到足够有启发性。如果你打算使用它们,请在评论中告诉我。

(题图:MJ/d25e71fa-f24e-49be-9579-e0520a8f6e18)


via: https://itsfoss.com/fuzzy-file-search-linux/

作者:Sreenath 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
测评适用于 Linux 中 Wayland 的最佳屏幕录制软件 | Linux 中国Reminders:一个漂亮的开源 Linux 应用,可帮助你完成工作 | Linux 中国大学排名的模糊空间和靠谱度10 个最佳 Linux 虚拟化软件 | Linux 中国破解 Linux 文件安放之谜:哪里才是绝佳文件归宿?在 Linux 上用 Kdenlive 编辑视频 | Linux 中国终端基础:在 Linux 中删除文件和文件夹 | Linux 中国8 款最佳的 Linux 远程桌面工具 | Linux 中国5 个令人惊讶的 Linux 用途 | Linux 中国都快想退休了,才发现/觉得我入错行了!如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io+直接io使用 Linux 让旧电脑焕发新颜 | Linux 中国如何高效实现文件传输:小文件用零拷贝、大文件用异步io+直接io超越 Bash: 9 个不太知名的 Linux Shell 及其功能 | Linux 中国5 个最漂亮的 Arch Linux 发行版 | Linux 中国Kali Linux 简介:你需要了解的一切 | Linux 中国如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国比 Ubuntu 更好?Ubuntu 爱好者的 11 款最佳 Linux 发行版 | Linux 中国文革记忆 -- 红小兵追疯子使用 ChatGPT AI 从英文文本生成 Linux 命令 | Linux 中国川普或以独立人身份参选7 个超轻量级 Linux 发行版 | Linux 中国11 个不可变 Linux 发行版,适合那些想要拥抱未来的人们 | Linux 中国如何在 Ubuntu 和其他 Linux 发行版中查看 AVIF 图像 | Linux 中国终端基础:在 Linux 中复制文件和目录 | Linux 中国硬核观察 #1099 开发中的 KDE Plasma 6 默认双击打开文件和文件夹将 Linux 终端与 Nautilus 文件管理器结合起来 | Linux 中国risiOS:一个易于使用的基于 Fedora 的 Linux 发行版 | Linux 中国空巢日记摘要2005如何入门 Linux Shell 脚本编写 | Linux 中国Voyager Linux 23.04:具有华丽外观且无 Snap 的 Ubuntu 体验 | Linux 中国一张表,了解大奖的世界包含 Openbox 的 7 个极简 Linux 发行版 | Linux 中国Alpine Linux 3.18 发布 | Linux 中国如何在 Linux 主机和 KVM 中的 Windows 客户机之间共享文件夹 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。