如何在 Linux 上使用 fd 命令如何在 Linux 上使用 fd 命令如何在 Linux 上使用 fd 命令如何在 Linux 上使用 fd 命令
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 fd 命令

在 Linux 上,fd 是 find 命令的更简单替代方法。它具有简化的语法、使用合理的默认值并具有内置的常识行为。让我们逐步了解它。

fd 与 find:有什么区别?

fd 命令并不是要取代传统的 find 命令,它一直在 Linux 上,嗯,永远。相反,fd 尝试以更直接的方式满足 find 的大多数常见用途,而且它通常比 find 快八到九倍>。你可以在项目的 GitHub 存储库页面上看到它的一些基准。

fd 有一个彩色输出,类似于某些 ls 模式。它是递归的,但默认情况下不搜索隐藏目录。它了解 Git,并且还会自动忽略“.gitignore”文件中的任何模式。

fd 默认不区分大小写。但是,如果您的搜索模式包含大写字母,fd 将以区分大小写的模式运行。当然,您可以覆盖默认值,但在许多情况下,它们对您有利。

安装 fd

从 Ubuntu 19.04 (Disco Dingo,) 开始,您可以通过 apt-get 调用官方维护的包来直接安装 fd。如果您运行的是旧版本的 Ubuntu,请查看 Git 中心页面上的安装说明。

输入以下内容:

sudo apt-get install fd-find

在 Ubuntu 中,命令是 fdfind 以避免与另一个现有实用程序发生名称冲突。如果你希望它是 fd,你可以设置一个别名:

alias fd=fdfind

要使别名持久化以便它在重新启动后仍然可用,请将其放入“.bashrc”或“.bash_aliases”文件中。

要在 Fedora 上安装 fd,请键入以下命令:

sudo dfn install fd-find

在 Manjaro 上,输入以下内容:

sudo pacman -Syu fd

fd 与 fdfind

为避免混淆,我们在 Ubuntu 测试 PC 上保留了默认名称 fdfind 的命令。 fd 和 fdfind 是完全相同的命令,正如您将在下面的示例中看到的(如果您要求 fdfind 显示其版本,它称自己为“fd”):

fdfind --version

我们将调用命令“fed”,但在示例中,我们将使用 Ubuntu“fdfind”。在其他 Linux 发行版上,您可以键入“fd”而不是“fdfind”以节省几次击键。

使用 fd 进行简单搜索

如果您使用没有命令行选项的 fd,它的行为有点像 ls,除了它默认列出子目录中的文件。

输入以下内容:

fdfind

对于不同的文件类型和目录,输出以不同的颜色显示。

要查看特定类型的文件,请使用 -e(扩展名)选项。请注意,您不必在扩展名前加上句点 (.),也不区分大小写。

例如,您可以键入以下内容:

fdfind -e png

现在,列出的唯一文件是 PNG 图像文件。

要查找单个文件,请在命令行中键入其名称,如下所示:

fdfind index.page

该文件被发现并恰好在一个子目录中。我们不必告诉 fd 递归搜索。

要在特定目录中开始搜索,请在命令行中包含文件路径。以下命令将在“/etc”目录中开始搜索,并查找文件名中包含“passwd”的文件:

fdfind passwd /etc

在这里,我们正在搜索文件名中包含“coord”的所有 C 源代码文件:

fdfind -e c coord

找到两个匹配的文件。

fd 和 Git

Git 是一个非常流行的源代码版本控制系统。如果您在计算机上使用 Git,您可能会使用“.gitignore”文件来告诉 Git 它应该关注哪些文件,哪些可以忽略。默认情况下,fd 遵循“.gitignore”文件中的设置。

在这个目录中,我们有一个 Git 存储库和“.gitignore”文件。我们键入以下内容:

ls -adl .git*

让我们让 fd 列出文件名中包含“coord”的所有文件。然后我们将重复搜索并使用 -I(不忽略)选项。这告诉 fd 忽略“.gitignore”文件中的设置并报告每个匹配的文件。

为此,我们输入以下内容:

fdfind coord
fdfind coord -I

第二组结果中的两个额外文件是目标文件。这些是在编译文件程序时创建的。然后链接器使用它们来创建程序的最终可执行版本。

目标文件通常被源代码版本控制程序忽略。每次编译程序时都会重新生成它们,因此您不必存储它们的副本。 “.gitignore”文件中有一个条目指示 Git 忽略目标文件,默认情况下,fd 也会忽略它们。

-I(不忽略)选项强制 fd 返回它找到的所有内容,而不是由“.gitginore”文件引导。

文件类型和区分大小写

您可以要求 fd 查找目录、文件(包括可执行文件和空文件)和符号链接。您可以使用 -t(类型)选项,后跟以下字母之一:

  • f:文件。
  • d:目录。
  • l:符号链接。
  • x:可执行文件。
  • e:空文件。

下面查找名为 images 的目录:

fdfind -td images

找到一个匹配项,比当前目录低一个子目录。

让我们看看区分大小写如何与搜索模式一起使用。我们键入以下内容,首先搜索文件名中包含“geo”的文件,然后搜索文件名中包含“Geo”的文件:

fdfind -tf geo
fdfind -tf Geo

在第一个命令中,我们使用了小写搜索模式,这导致 fd 以不区分大小写的方式运行。这意味着“Geo”和“geo”都是有效匹配。

我们的第二个命令包含一个大写字符,这导致 fd 以区分大小写的方式运行。这意味着只有“Geo”是有效匹配。

命令执行

fd 命令允许您启动另一个命令并对每个找到的文件执行它。

假设我们知道源代码目录树中某处有一个 Zip 文件。我们可以使用以下命令查找它,该命令搜索具有 ZIP 扩展名的文件:

fdfinf -e zip

使用 -x (exec) 选项,您可以将找到的每个文件传递给另一个命令以供其处理。例如,我们可以键入以下命令来调用解压缩实用程序来解压缩我们的 ZIP 文件(“{}”是代表找到的文件的占位符):

fdfind -e zip -x unzip {}

这会将文件解压缩到当前工作目录中。如果我们希望将其解压缩到包含 ZIP 文件的目录中,我们可以使用以下占位符之一:

  • {}:找到的文件的完整文件路径和名称。
  • {/}:找到的文件的文件名。
  • {//}:包含找到的文件的目录。
  • {/.}:找到的文件的文件名,不带扩展名。

为了在包含它的目录中找到并解压缩我们的 ZIP 文件,我们可以使用 unzip -d(目录)选项,并传入父目录占位符({//} ):

fdfind -e zip -x unzip {} -d {//}

然后找到 ZIP 文件并将其解压缩到其父目录中。

您的首选?

因为它以如此简单的方式涵盖了最常见的用途,所以 fd 可以轻松成为您的首选“查找”命令。每当您需要它的更高级功能时,您总是可以返回到那个经验丰富的老手,find。

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com