推荐一款比 Find 快 10 倍的搜索工具 FD

https://www.hi-linux.com/posts/15017.html

试了下 很好用呢. 

Posted by Mike on 2018-08-13

fd 是基于 Rust 开发的一个速度超快的命令行搜索工具,fd 旨在成为 Linux / Unix 下 find 命令的替代品。

fd 虽然不能提供现在 find 命令所有的强大功能,但它也提供了足够强大的功能来满足你日常需要。比如:简洁的语法、彩色的终端输出、超快的查询速度、智能大小写、支持正则表达式以及可并行执行命令等特性。

项目地址:https://github.com/sharkdp/fd

安装 fd

fd 具有良好跨平台特性,支持在 Linux、macOS、Windows 等多种平台下安装。下面我们介绍下几个比较常用平台的安装方法:

  • Ubuntu / Debain
12
$ wget https://github.com/sharkdp/fd/releases/download/v7.0.0/fd_7.0.0_amd64.deb$ sudo dpkg -i fd_7.0.0_amd64.deb
  • Fedora
1
$ dnf install fd-find
  • macOS
1
$ brew install fd
  • Windows

Scoop 和 Chocolatey 都是 Windows 下的包管理系统,其具体使用方法都可参考其官网。

12345
# 通过 Scoop 安装$ scoop install fd

# 通过 Chocolatey 安装$ choco install fd

更多系统的安装方法可参考官方文档

fd 命令行选项

12345678910111213141516171819202122232425262728293031
USAGE:    fd [FLAGS/OPTIONS] [<pattern>] [<path>...]

FLAGS:    -H, --hidden            Search hidden files and directories    -I, --no-ignore         Do not respect .(git|fd)ignore files        --no-ignore-vcs     Do not respect .gitignore files    -s, --case-sensitive    Case-sensitive search (default: smart case)    -i, --ignore-case       Case-insensitive search (default: smart case)    -F, --fixed-strings     Treat the pattern as a literal string    -a, --absolute-path     Show absolute instead of relative paths    -L, --follow            Follow symbolic links    -p, --full-path         Search full path (default: file-/dirname only)    -0, --print0            Separate results by the null character    -h, --help              Prints help information    -V, --version           Prints version information

OPTIONS:    -d, --max-depth <depth>        Set maximum search depth (default: none)    -t, --type <filetype>...       Filter by type: file (f), directory (d), symlink (l),                                   executable (x)    -e, --extension <ext>...       Filter by file extension    -x, --exec <cmd>               Execute a command for each search result    -E, --exclude <pattern>...     Exclude entries that match the given glob pattern        --ignore-file <path>...    Add a custom ignore-file in .gitignore format    -c, --color <when>             When to use colors: never, *auto*, always    -j, --threads <num>            Set number of threads to use for searching & executing

ARGS:    <pattern>    the search pattern, a regular expression (optional)    <path>...    the root directory for the filesystem search (optional)

fd 使用实例

简单搜索

fd 只需带上一个需要查找的参数就可以执行最简单的搜索,该参数就是你要搜索的任何东西。例如:你想要找一个包含 pace 关键字的文件名或目录。

12345678910
$ fd pacesource/lib/Han/dist/font/han-space.otfsource/lib/Han/dist/font/han-space.woffsource/lib/pacesource/lib/pace/pace-theme-barber-shop.min.csssource/lib/pace/pace-theme-big-counter.min.csssource/lib/pace/pace-theme-bounce.min.csssource/lib/pace/pace-theme-center-atom.min.csssource/lib/pace/pace-theme-center-circle.min.csssource/lib/pace/pace-theme-center-radar.min.css

注:fd 默认是不区分大小写和支持模糊查询的。

按指定类型进行搜索

默认情况下,fd 会搜索所有符合条件的结果。如果你想指定搜索的类型可以使用 -t 参数,fd 目前支持四种类型:fdlx,分别表示:文件、目录、符号链接、可执行文件。下面我们来看几个实际的例子:

  • 只搜索包含 pace 关键字的文件
123456789
$ fd -tf pacesource/lib/Han/dist/font/han-space.otfsource/lib/Han/dist/font/han-space.woffsource/lib/pace/pace-theme-barber-shop.min.csssource/lib/pace/pace-theme-big-counter.min.csssource/lib/pace/pace-theme-bounce.min.csssource/lib/pace/pace-theme-center-atom.min.csssource/lib/pace/pace-theme-center-circle.min.csssource/lib/pace/pace-theme-center-radar.min.css
  • 只搜索包含 pace 关键字的目录
12
$ fd -td pacesource/lib/pace

搜索指定目录

fd 默认会在当前目录和其下所有子目录中搜索,如果你想搜索指定的目录就需要在第二个参数中指定。例如:要在指定的 /etc 目录中搜索包含 passwd 关键字的文件或目录。

12345
$ fd passwd /etc/etc/master.passwd/etc/pam.d/chkpasswd/etc/pam.d/passwd/etc/passwd

通过正则表达式搜索

  • 搜索当前目录下以 head 开头并以 swig 结尾的文件。
1234
$ fd '^head.*swig$'layout/_custom/header.swiglayout/_partials/head.swiglayout/_partials/header.swig
  • 搜索当前目录下文件名包含字母且文件名后缀为 PNG 的文件。
123456
$ fd '[a-z]\.png$'source/images/apple-touch-icon-next.pngsource/images/searchicon.pngsource/lib/fancybox/source/fancybox_overlay.pngsource/lib/fancybox/source/fancybox_sprite.pngsource/lib/fancybox/source/helpers/fancybox_buttons.png

其它技巧

  • 搜索隐藏文件

fd 支持隐藏文件搜索,如果你需要搜索隐藏文件可以加上 -H 参数。例如:在当前目录下搜索关键字为 zshrc 的隐藏文件。

12
$ fd -H zshrc.zshrc
  • 搜索指定扩展名的文件

在当前目录下搜索文件扩展名为 md 的文件。

123456
$ fd -e mdREADME.cn.mdREADME.mdsource/lib/fastclick/README.mdsource/lib/jquery_lazyload/CONTRIBUTING.mdsource/lib/jquery_lazyload/README.md

在当前目录下搜索文件名包含 reademe 且扩展名为 md 的文件。

12345
$ fd -e md readmeREADME.cn.mdREADME.mdsource/lib/fastclick/README.mdsource/lib/jquery_lazyload/README.md
  • 排除特定的目录或文件

搜索当前目录下除 lib 目录外的所有包含关键字 readme 的文件或目录。

123
$ fd -E lib readmeREADME.cn.mdREADME.md

搜索指定目录下除文件名后缀为 js 的所有文件。

1234
$ fd  -E '*.js' -tf  . source/lib/fastclicksource/lib/fastclick/LICENSEsource/lib/fastclick/README.mdsource/lib/fastclick/bower.json
  • 结合外部命令对结果进行批量处理

实现的方式有两种:一是和 find 命令的类似的处理方法,通过 xargs 命令来关联相关命令处理。二是通过 fd 自己的 -x 参数来实现。

我们来看一个具体的例子,统计当前目录下所有文件名后缀为 js 的文件的行数。

1234567891011121314151617181920
# 通过 -x 参数实现$ fd -e js -x  wc  -l

      30 scripts/merge-configs.js    2225 scripts/merge.js      31 scripts/tags/button.js      12 scripts/tags/center-quote.js      59 scripts/tags/exturl.js      26 scripts/tags/full-image.js     833 scripts/tags/group-pictures.js

# 通过 xargs 参数实现$ fd -0 -e js | xargs -0 wc  -l      30 scripts/merge-configs.js    2225 scripts/merge.js      31 scripts/tags/button.js      12 scripts/tags/center-quote.js      59 scripts/tags/exturl.js      26 scripts/tags/full-image.js     833 scripts/tags/group-pictures.js

参考文档

http://www.google.com
http://t.cn/RD03Aom
http://t.cn/ROV0Xos

[转帖]推荐一款比 Find 快 10 倍的搜索工具 FD的更多相关文章

  1. 推荐25款实用的 HTML5 前端框架和开发工具【下篇】

    快速,安全,响应式,互动和美丽,这些优点吸引更多的 Web 开发人员使用 HTML5.HTML5 有许多新的特性功能,允许开发人员和设计师创建应用程序和网站,带给用户桌面应用程序的速度,性能和体验. ...

  2. 推荐一款非常好用的java反编译工具(转)

    源: 推荐一款非常好用的java反编译工具

  3. 推荐一款好用的文件/文件夹对比工具 —— Beyond Compare

    推荐一款好用的文件/文件夹对比工具 —— Beyond Compare! 有需要的人,用了都说好: 不知道这个是干嘛用的,说再多也没用.

  4. 【我的Android进阶之旅】推荐一款视频转换GIF图片格式的转换工具(Video to GIF)

    一.背景 最近想把一些Android Demo的运行效果图获取下来,但是一直使用真机进行调试,在电脑上不好截取一段gif动画.而之前使用模拟器的时候可以使用 GifCam 工具进行屏幕动画截取.Gif ...

  5. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  6. 比hive快10倍的大数据查询利器presto部署

    目前最流行的大数据查询引擎非hive莫属,它是基于MR的类SQL查询工具,会把输入的查询SQL解释为MapReduce,能极大的降低使用大数据查询的门槛, 让一般的业务人员也可以直接对大数据进行查询. ...

  7. 比传统事务快10倍?一张图读懂阿里云全局事务服务GTS

    近日,阿里云全局事务服务GTS正式上线,为微服务架构中的分布式事务提供一站式解决方案.GTS的原理是将分布式事务与具体业务分离,在平台层面开发通用的事务中间件GTS,由事务中间件协调各服务的调用一致性 ...

  8. 推荐15款最佳的响应式 Web 设计测试工具

    响应式网页设计是根据设备的屏幕尺寸,平台和方向来开发的网页,是一种对最终用户的行为和环境作出反应的方法.响应式设计使用灵活的网格和布局,图像和智能使用 CSS 媒体查询的组合.当从它们在不同设备使用的 ...

  9. 推荐一款简单易用线上引流测试工具:GoReplay

    一. 引流测试产生背景 日常大部分的测试工作都是在测试环境下,通过模拟用户的行为来对系统进行验证,包括功能以及性能.在这个过程中,你可能会遇到以下问题: 用户访问行为比较复杂,模拟很难和用户行为一致, ...

随机推荐

  1. WebSocket 实现前后端通信的笔记

    之前在做站内信时,用到了 WebSocket ,整理了一些笔记分享如下.本文基于 SpringBoot 2.1.5,本文不涉及环境搭建. 引入依赖 在 Spring 中要使用 WebSocket 功能 ...

  2. LG1036

    当我们看到这道题的时候,我们不仅大吼一声,这不就是搜索嘛. 于是搜索两大刀!搜索目标和搜索状态! 搜索目标:求选数的方案,以及他们的和是否为质数. 搜索状态: 1.从后往前分析目标(或从前往后):和是 ...

  3. ssh配置基础

    1:hostname r12:R1(config)#username xxx secret ppp3:R1(config)#ip domain-name baidu.com 设置域名4:R1(conf ...

  4. hibernate之多对多关系

    hibernate的多对多hibernate可以直接映射多对多关联关系(看作两个一对多) 下面我们拿三张表来做实例 t_book_hb t_book_category_hb(桥接表) t_catego ...

  5. CSPS_112

    这是Dybala神的差点AK场, 可我T2读入写挂&&T3上届算错没有AK 如果这是C... T1 xjb猜了个结论就过对拍 T2 topsort好题 T3 各险绅嗵的一个dp 我打的 ...

  6. Gift to XBACK(小小礼物)

    什么白天 什么黑夜 我没有 准备着给你的 Surprise 你给我的爱 让我觉得已足够 是你让我相信爱会有 是你的爱陪我绕宇宙 打开日记本写下忧愁 你却让我看时间轴 我才知道现在我能看到的画面 拥有你 ...

  7. python3 报错UnicodeEncodeError

    在ubuntu执行python3的时候,出现 UnicodeEncodeError: 'latin-1' codec can't encode characters in position 10-18 ...

  8. a标签伪类选择器+过度模块

    a标签的伪类选择器 1.什么是a标签的伪类选择器?a标签的伪类选择器是专门用来修改a标签不同状态的样式的. 2.格式: 1):link 修改从未被访问过状态下的样式. 2):visited 修改被访问 ...

  9. 剑指offer:丑数

    题目描述: 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 解题 ...

  10. go -- 测试

    package 测试 import ( "fmt" "github.com/magiconair/properties/assert" "net/ht ...