推荐一款比 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. 按键精灵PC端脚本

    定义变量的时候不需要定义类型 ,由于是易语言,变量名可以是中文 文本路径 = "C:\Users\Administrator\Desktop\1.txt"//改成自己的文本路径 T ...

  2. 使用GCOV进行代码覆盖率统计

    GCOV是随GCC一起发布的用于代码覆盖率统计的工具,一般配合其图形化工具LCOV一起使用. 一.安装 GCOV不需要单独安装,LCOV下载后执行sudo make install即可完成安装. 二. ...

  3. LightOJ - 1318 - Strange Game(组合数)

    链接: https://vjudge.net/problem/LightOJ-1318 题意: In a country named "Ajob Desh", people pla ...

  4. Discrete Cosine Transform

    离散余弦变换 由于实信号傅立叶变换的共轭对称性,导致DFT后在频域中有一半的数据冗余.离散余弦变换(DCT)在处理实信号时比离散傅立叶(DFT)变换更具优势.在处理声音信号这类实信号时,DFT得到的结 ...

  5. WinDbg常用命令系列---输入内存值的命令e*

    e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Enter Values) e*命令将您指定的值输入内存.不要将此命令与~e(Thread-Specific C ...

  6. 20-ESP8266 SDK开发基础入门篇--C# TCP客户端编写 , 加入数据通信

    https://www.cnblogs.com/yangfengwu/p/11192594.html 自行调整页面 连接上以后主动发个数据 namespace TCPClient { public p ...

  7. [RN] React Native 使用 react-native-vector-icons 图标显示问号

    我在第一次使用 react-native-vector-icons 时图标显示问号 后来在网上查了很多文章,发现原因有两个 1)安装完 react-native-vector-icons 后,没有li ...

  8. luoguP3003 [USACO10DEC]苹果交货Apple Delivery

    LOL新英雄卡莎点击就送 一句话题意: 三个点a1,a2,b,求从b到a1和a2的最短路 做法:求出a1->b和a2->b的最短路,两者取min,之后再加上a1->a2的最短路 为啥 ...

  9. 【loj2568】【APIO2016】【学习笔记 左偏树】烟花表演

    题目 一棵树,\(n\)个非叶子节点,编号为\(1-n\),\(m\)个叶子节点,编号为\(n+1-n+m\) 每条边有边权,修改边权的代价为\(|a-b|\) ; 定义一个叶子的距离为到1(根节点) ...

  10. samba-centos7

    目的: 1,匿名访问共享目录/home/home and /home/share 2,/home/samba/home 共享名为home,有读写权限,但是进入该文件夹需要验证用户 3,/home/sa ...