📜  fd - 简单快速的 find 命令替代方法

📅  最后修改于: 2022-05-13 01:57:29.281000             🧑  作者: Mango

fd - 简单快速的 find 命令替代方法

fd 是一个命令行工具,用于在文件系统上查找文件。这个工具类似于 Linux 中的 find 命令,但 fd 使用起来更快捷、更简单。它不如 find 命令强大,但以简单的方式提供了 find 命令的基本功能。让我们看看 fd 工具的功能。

特征

  • 简单的语法即 fd PATTERN
  • 支持使用正则表达式
  • 使用不同的颜色突出显示不同的文件类型
  • 默认情况下,忽略隐藏的文件和目录。
  • 忽略 .gitignore 中的模式,
  • 由于并行目录遍历,输出速度快。

现在让我们看看fd工具的安装

安装

fd 工具可用于 Linux 的所有包管理器。根据您的系统使用以下命令之一安装 fd 工具:

对于 Debian/Ubuntu/Kali Linux:

sudo apt install fd-find

对于 Fedora:



sudo dnf install fd-find

对于 Alpine Linux

apk add fd

对于 Arch Linux:

pacman -S fd

对于带有 Homebrew 的 macOS:

brew install fd

对于 macOS

sudo port install fd

对于带有勺子的 Windows

scoop install fd

对于带有巧克力色的窗户:

choco install fd

对于 FreeBSD

pkg install fd-find

要使用 npm 安装 fd,请使用以下命令:



npm install -g fd-find

用法

现在让我们看看如何使用 fd 命令。

使用 fd 进行简单搜索

使用 fd 进行最基本的文件搜索是使用 fd 命令搜索特定模式。要使用 fd 命令搜索模式,只需提及一个模式,该模式应该是我们必须搜索的文件名的一部分。这是一个例子:

find lvm

fd 从当前目录递归搜索提供的模式。

正则表达式搜索

在 fd 命令中,每个带引号的模式都被视为正则表达式。要查找以“se”字符串结尾的文件,请使用以下命令

fd '.*s3$'

指定根目录

如果你想从另一个目录中搜索文件作为源目录,即 fd 将开始从提到的文件夹中递归搜索。这是一个例子:

fd profile /etc/

在上面的命令中,我们提供了 /etc/ 作为根文件夹。

递归列出所有文件

要递归列出当前目录中的所有文件,请使用 fd 命令。



fd 

要列出其他目录中的所有文件,请使用包罗万象的模式,例如.^提及目录路径:

fd . /src/

搜索特定的文件扩展名

要搜索具有特定文件扩展名的文件,请使用 -e 选项和 fd 并提及文件扩展名类型。

find -e md

我们还可以使用 -e 选项来查找带有扩展名的特定模式

fd -e js app

搜索特定文件名

要搜索准确提供的搜索模式,请在 fd 命令中使用 -g 或 –glob 选项:

fd -g libc.so /usr

隐藏和忽略的文件

默认情况下,fd 工具不显示隐藏的文件和目录。要在隐藏文件夹中搜索模式,请使用 –hidden 选项



fd -H pre-commit

如果您正在使用 git 存储库,那么 fd 将不会匹配 .gitingore 文件中的文件夹。要在 .gitignore 文件中的文件夹和文件中启用搜索,请使用 –no-ignore 或 -I 选项:

fd -I abbrev

匹配完整路径

默认情况下,fd 仅匹配具有模式的文件名以使用 -p 或 –full-path 选项匹配完整路径:

命令执行

除了查找模式之外,我们还可以使用 fd 命令做更多的事情。我们也可以使用 fd 命令来执行这些命令。 fd 提供了两个选项来执行命令

  • -x / –exec :此选项对 fd 命令生成的每个结果执行命令。
  • -X / –exec-batch:这个选项只会执行一个命令一次。

带有选项 -x 的示例:

要使用 clang 格式查找和格式化 .cpp 或 .h 文件,我们可以使用以下命令:

fd -e h -e cpp -x clang-format -i

选项 -X 的示例:



要在 vim 中打开当前目录中的所有文件,请使用以下命令:

fd  -X vim

Fd 命令中的占位符

fd 命令中的占位符可用于通过 -x 选项更有效地处理命令。以下是用于将*.jpg 文件转换为*.png 文件的命令。

fd -e jpg -x convert {} {.}.png

在上面的命令中,{} 是表示搜索结果的占位符,{.} 这个选项与 {} 类似,但 {.} 占位符表示没有文件扩展名的搜索结果。

以下是可与 -x 或 -X 选项一起使用的占位符:

  • {}:这是一个占位符,将替换为搜索结果的路径 (files/profile.jpg)。
  • {.}:这是一个占位符,将替换为搜索结果的路径但没有扩展名(文件/配置文件)
  • {/}:这是一个占位符,将替换为文件的基本名称 (profile.jpg)
  • {//}:这是一个占位符,将替换为父发现的路径(文件/)
  • {/.}:这是一个占位符,将替换为没有扩展名的文件名(配置文件)

排除特定文件或目录

如果要从 fd 命令中排除来的结果,请使用选项 -E 和 fd 命令。要搜索所有隐藏文件并排除 .git 目录,您可以使用以下命令:

fd -H -E .git 

要从搜索中排除已安装的驱动器,我们可以使用以下命令:

fd -E /mnt/external-drive …

要永久排除文件,请在主目录中创建 .fdignore 文件,并将要忽略的文件放入该文件中

touch  ~/.fdignore
echo  /mnt/external-drive >> ~/.fdignore

要永久排除文件并全局放置要忽略的文件,请将它们放入 ~/.config/fd/ignore 文件。

删除文件

使用fd命令删除当前目录下扩展名为.cpp的文件,我们可以使用以下命令

fd -e cpp  -X rm

如果要以交互方式删除文件,请使用选项 -i 和 -X 选项

fd -e cpp  -X rm -i

要了解 fd 命令的所有选项,请在 fd 命令中使用 –help 选项:

fd --help

要了解有关 fd 命令的更多信息,请阅读 fd 的手册页。

man fd