如何在 Linux 上使用 fd 命令
已发表: 2022-01-29 在 Linux 上, fd
是find
命令的一种更简单的替代方法。 它具有简化的语法,使用合理的默认值,并具有内置的常识行为。 让我们逐步了解它。
fd 与 find:有什么区别?
fd
命令并不是要取代传统的find
命令,它一直在 Linux 上,嗯,永远。 相反, fd
试图以更直接的方式满足find
的大多数常见用途——而且,它通常比find
快八到九倍。 您可以在项目的 GitHub 存储库页面上查看它的一些基准测试。
fd
具有彩色输出,类似于某些ls
模式。 它是递归的,但默认情况下不搜索隐藏目录。 它知道 Git,并且会自动忽略“.gitignore”文件中的任何模式。
fd
默认情况下不区分大小写。 但是,如果您的搜索模式包含大写字母,则fd
会以区分大小写的模式运行。 当然,您可以覆盖默认值,但在许多情况下,它们对您有利。
相关:如何使用所有 Linux 的搜索命令
安装 fd
从 Ubuntu 19.04 (Disco Dingo) 开始,您可以通过使用apt-get
调用官方维护的软件包来直接安装fd
。 如果您运行的是旧版本的 Ubuntu,请查看 Git 中心页面上的安装说明。
键入以下内容:
sudo apt-get install fd-find
在 Ubuntu 中,该命令是fdfind
以避免与另一个现有实用程序发生名称冲突。 如果你希望它是fd
,你可以设置一个别名:
别名 fd=fdfind
要使别名持久化以便在重新启动后仍然可用,请将其放入“.bashrc”或“.bash_aliases”文件中。
相关:如何在 Linux 上创建别名和 Shell 函数
要在 Fedora 上安装fd
,请输入以下命令:
sudo dfn install fd-find
在 Manjaro 上,键入以下内容:
sudo pacman -Syu fd
fd 与 fdfind
为避免混淆,我们在 Ubuntu 测试 PC 上保留了该命令的默认名称fdfind
。 fd
和fdfind
是完全相同的命令,正如您将在以下示例中看到的那样(如果您要求fdfind
显示其版本,它称自己为“fd”):
fdfind --版本
我们将调用命令“fed”,但在示例中,我们将使用 Ubuntu 的“fdfind”。 在其他 Linux 发行版上,您可以键入“fd”而不是“fdfind”以节省一些击键。
使用 fd 进行简单搜索
如果你使用fd
没有命令行选项,它的行为有点像ls
,除了它默认列出子目录中的文件。
键入以下内容:
查找
对于不同的文件类型和目录,输出以不同的颜色显示。
要查看特定类型的文件,请使用
(扩展名)选项。 请注意,您不必在扩展名前加上句点 (.),也不区分大小写。-e
例如,您可以键入以下内容:
fdfind -e png
现在,列出的唯一文件是 PNG 图像文件。
要查找单个文件,请在命令行中键入其名称,如下所示:
fdfind index.page
找到该文件并且恰好位于子目录中。 我们不必告诉fd
递归搜索。
要在特定目录中开始搜索,请在命令行中包含文件路径。 以下命令将在“/etc”目录中开始搜索,并查找文件名中包含“passwd”的文件:
fdfind 密码 /etc
在这里,我们正在搜索文件名中包含“coord”的所有 C 源代码文件:
fdffind -ec 坐标
找到了两个匹配的文件。
fd 和 Git
Git 是一个非常流行的源代码版本控制系统。 如果您在计算机上使用 Git,您可能会使用“.gitignore”文件来告诉 Git 它应该关注哪些文件,以及可以忽略哪些文件。 默认情况下, fd
尊重“.gitignore”文件中的设置。
在这个目录中,我们有一个 Git 存储库和“.gitignore”文件。 我们输入以下内容:
ls -adl .git*
让我们让fd
列出文件名中包含“coord”的所有文件。 然后我们将重复搜索并使用-I
(不忽略)选项。 这告诉fd
忽略“.gitignore”文件中的设置并报告每个匹配的文件。
为此,我们键入以下内容:
fd查找坐标
fdfind 坐标 -I
第二组结果中的两个额外文件是目标文件。 这些是在编译文件程序时创建的。 然后链接器使用它们来创建程序的最终可执行版本。
源代码版本控制程序通常会忽略目标文件。 每次编译程序时它们都会重新生成,因此您不必存储它们的副本。 “.gitignore”文件中有一个条目指示 Git 忽略目标文件,默认情况下, fd
也会忽略它们。
-I
(不忽略)选项强制fd
返回它找到的所有内容,而不是由“.gitginore”文件引导。
文件类型和区分大小写
您可以要求fd
查找目录、文件(包括可执行文件和空文件)和符号链接。 您可以使用-t
(类型)选项,后跟以下字母之一:
- f :文件。
- d :目录。
- l :符号链接。
- x :可执行文件。
- e : 空文件。
下面查找名为 images 的目录:
fdfind -td 图片
找到一个匹配项,比当前子目录低一个子目录。
让我们看看区分大小写如何与搜索模式一起工作。 我们键入以下内容首先搜索文件名中包含“geo”的文件,然后搜索文件名中包含“Geo”的文件:
fdffind -tf 地理
fdfind -tf 地理
在第一个命令中,我们使用了小写搜索模式,这导致fd
以不区分大小写的方式运行。 这意味着“Geo”和“geo”都是有效的匹配项。
我们的第二个命令包含一个大写字符,这导致fd
以区分大小写的方式运行。 这意味着只有“Geo”是有效匹配。
命令执行
fd
命令允许您启动另一个命令并在每个找到的文件上执行它。
假设我们知道在我们的源代码目录树中某处有一个 Zip 文件。 我们可以使用以下命令查找它,该命令会搜索带有 ZIP 扩展名的文件:
fdffinf -e 压缩包
使用-x
(exec) 选项,您可以将每个找到的文件传递给另一个命令以由它处理。 例如,我们可以键入以下内容来调用解压缩实用程序来解压缩我们的 ZIP 文件(“{}”是代表找到的文件的占位符):
fdffind -e zip -x 解压{}
这将解压缩当前工作目录中的文件。 如果我们希望将其解压缩到包含 ZIP 文件的目录中,我们可以使用以下占位符之一:
- {} :找到的文件的完整文件路径和名称。
- {/} : 找到的文件的文件名。
- {//} :包含找到的文件的目录。
- {/.} :找到的文件的文件名,不带扩展名。
为了在包含它的目录中找到并解压缩我们的 ZIP 文件,我们可以使用 unzip -d
(目录)选项,并传入父目录占位符( {//}
):
fdffind -e zip -x 解压 {} -d {//}
然后找到 ZIP 文件并将其解压缩到其父目录中。
你的首选?
因为它以如此简单的方式涵盖了最常见的用途,所以fd
可以很容易地成为您的首选“查找”命令。 每当您需要它更高级的功能时,您总是可以回到那个经验丰富的老手, find
.
Linux 命令 | ||
文件 | 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 ·字符串·类型·重命名· zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
流程 | 别名· screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat ·超时·墙·是·杀死·睡眠· sudo · su ·时间· groupadd · usermod ·组· lshw ·关机·重新启动·停止·关机· passwd · lscpu · crontab ·日期· bg · fg | |
联网 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
相关:适合开发人员和爱好者的最佳 Linux 笔记本电脑