前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fd一个简单快速的find命令替代方案

fd一个简单快速的find命令替代方案

作者头像
玖柒的小窝
修改2021-10-22 10:46:15
1.4K0
修改2021-10-22 10:46:15
举报
文章被收录于专栏:各类技术文章~各类技术文章~

大多数Linux用户都非常熟悉find命令以及可以使用的许多情况。今天我们将回顾一个名为 fd 的命令的替代方法。 fd ,是一款简单,快速且用户友好的工具,与查找相比,其工作速度更快。它并不是要完全取代 find ,而是为您提供一种易于使用的替代方案,其执行速度稍快一些。

fd特点

  • 直观的语法:fd PATTERN而不是find -iname '*PATTERN*'.
  • 正则表达式(默认)和基于 glob 的模式。
  • 由于并行目录遍历,速度非常快。
  • 使用颜色突出显示不同的文件类型(与ls相同)。
  • 支持并行命令执行
  • 智能大小写:默认情况下搜索不区分大小写。如果模式包含大写字符*,则切换为区分大小写。
  • 默认情况下忽略隐藏的目录和文件。
  • .gitignore默认情况下,忽略来自您的模式。
  • 命令名称比find短50% 。

如何在Linux中安装fd

我们将看看如何在不同的Linux发行版中安装 fd 。 对于 UbuntuDebian 的发行版,您需要从发布页面下载最新的fd版本并使用以下命令进行安装。

代码语言:javascript
复制
$ wget https://github.com/sharkdp/fd/releases/download/v0/fd-musl_0_amddeb$ sudo dpkg -i fd-musl_0_amddeb

在其他Linux发行版上,您可以使用包管理器从默认存储库安装fd

代码语言:javascript
复制
# dnf install fd-find  [On Fedora]# pacman -S fd         [On Arch Linux]# emerge -av fd        [On Gentoo]# zypper in fd         [On OpenSuse]# brew install fd      [On macOS]
CentOS安装
代码语言:javascript
复制
# wget https://github.com/sharkdp/fd/releases/download/v7.4.0/fd-v7.4.0-x86_64-unknown-linux-musl.tar.gz# tar -zxvf fd-v7.4.0-x86_64-unknown-linux-*.tar.gz# cd fd-v7.4.0-x86_64-unknown-linux-*# cp ./fd /usr/local/bin/# cp ./fd.1 /usr/local/share/man/man1/# mandb

命令选项

代码语言:javascript
复制
FLAGS:    -H, --hidden            搜索隐藏的文件和目录    -I, --no-ignore         不要忽略 .(git | fd)ignore 文件匹配        --no-ignore-vcs     不要忽略.gitignore文件的匹配    -s, --case-sensitive    区分大小写的搜索(默认值:智能案例)    -i, --ignore-case       不区分大小写的搜索(默认值:智能案例)    -F, --fixed-strings     将模式视为文字字符串    -a, --absolute-path     显示绝对路径而不是相对路径    -L, --follow            遵循符号链接    -p, --full-path         搜索完整路径(默认值:仅限 file-/dirname)    -0, --print0            用null字符分隔结果    -h, --help              打印帮助信息    -V, --version           打印版本信息OPTIONS:    -d, --max-depth         设置最大搜索深度(默认值:无)    -t, --type ...       按类型过滤:文件(f),目录(d),符号链接(l),                                   可执行(x),空(e)    -e, --extension ...       按文件扩展名过滤    -x, --exec                为每个搜索结果执行命令    -E, --exclude ...     排除与给定glob模式匹配的条目        --ignore-file ...    以.gitignore格式添加自定义忽略文件    -c, --color              何时使用颜色:never,*auto*, always    -j, --threads             设置用于搜索和执行的线程数    -S, --size ...           根据文件大小限制结果。ARGS:        the search pattern, a regular expression (optional)    ...    the root directory for the filesystem search (optional)

如何在Linux中使用fd

与find命令类似, fd 有许多用例,但让我们从检查可用选项开始:

代码语言:javascript
复制
# fd -hOR# fd --help

我们来看看几个例子。您可以在没有任何参数的情况下运行 fd ,输出与ls -R命令非常相似。

# fd

在下一个 fd 示例中,我将使用位于/var/www/html/中的默认WordPress安装来搜索不同的文件和文件夹。 在下面的示例中,我仅使用前10个结果来缩短命令输出。

# fd | head

假设我们想找到所有的jpg文件。我们可以使用- e标志按文件扩展名进行过滤:

# fd -e jpg

- e标志可以与这样的模式结合使用:

# fd -e php index

上面的命令将查找扩展名为 php 的文件,并在其中包含字符串 index : 如果要排除某些结果,可以使用- E标志,如下所示:

代码语言:javascript
复制
# fd -e php index -E rumenz

此命令将查找包含php扩展名的所有文件,其中包含字符串 index ,并将排除 rumenz 目录中的结果。 如果要指定搜索目录,只需将其作为参数提供:

代码语言:javascript
复制
# fd <pattery> <directory>

就像 find 一样,您可以使用 -x- exec 参数来执行搜索结果的并行命令执行。 这是一个示例,我们将使用 chmod 来更改图像文件的权限

代码语言:javascript
复制
# fd -e jpg -x chmod 644 {}

以上内容将找到扩展名为 jpg 的所有文件,并将运行 chmod 644 <path-to-file> 递归地找到所有 zip 档案并解压它们

代码语言:javascript
复制
# fd -e zip -x unzip

所有*.jpg文件转换为*.png文件

代码语言:javascript
复制
# fd -e jpg -x convert {} {.}.png

以下是括号的一些有用的解释和用法:

  • {} – 一个占位符,它将随着搜索结果的路径而改变(rumenz/uploads/01.jpg)。
  • {.}– 类似于{},但不使用文件扩展名 (rumenz/uploads/01)。
  • {/}:将被搜索结果的基本名称替换的占位符 (01.jpg)。
  • {//}: 发现路径的父目录 (rumenz/uploads)。
  • {/.}: 只有基名,没有扩展名 (01)。

这是对 fd命令的简要回顾,一些用户可能会发现更容易使用和更快。正如本文前面提到的, fd 并不是要完全取代 find ,而是提供简单的用法,更轻松的搜索和更好的性能。 Fd 不占用太多空间,是您的武器库中的一个很好的工具。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • fd特点
  • 如何在Linux中安装fd
    • CentOS安装
    • 命令选项
    • 如何在Linux中使用fd
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档