|
在Linux上,fd是查找命令的一种更简单的替代方法。它有简化的语法,使用合理的默认值,现在让我们来看看吧。# ?# Y/ `5 h6 H% R5 Q! d9 Q 1 |2 o; E E* v/ t. } fd 与 find 有什么区别?& p' p- u: C! Z& J. Z* \" s " x. c5 t6 X1 Y t# F7 Y fd命令并不意味着要取代传统的find命令,后者在Linux上一直存在。相反,fd试图以更直接的方式满足find的大多数常用用法,而且它通常比find快八到九倍。您可以在项目的GitHub存储库页面上看到它的一些基准测试。 fd具有彩色输出,类似于某些ls模式。它是递归的,但默认情况下不搜索隐藏的目录。它了解Git,还将自动忽略“.gitignore”文件中的任何模式。* g0 ^5 Z: H3 p t! L8 s fd默认不区分大小写。但是,如果您的搜索模式包含一个大写字母,fd将以区分大小写的模式运行。当然,您可以重写默认值,但是在许多情况下,它们对您是有利的。4 N+ S' Y$ d2 i2 t0 y4 l2 L 安装fd * H0 w" \' \4 s- P" L 从Ubuntu 19.04(Disco Dingo)开始,您可以通过使用apt-get调用官方维护的软件包直接安装fd。如果您运行的是旧版Ubuntu,请查看GitHub页面上的安装说明。 输入以下命令: linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get install fd-find k3 h* h* y5 h5 D3 W
在Ubuntu中,命令是fdfind,以避免与另一个现有的实用程序发生名称冲突。如果希望它是fd,可以设置一个别名: linuxmi@linuxmi:~/www.linuxmi.com$ alias fd=fdfind. U6 Z+ o0 {# w3 ], Z
要使别名保持不变,以便在重新启动后仍然可用,请将其放入“ .bashrc”或“ .bash_aliases”文件中。 要在Fedora上安装fd,请键入以下命令:! t# F3 a3 v3 A* s6 R+ J- } sudo dfn install fd-find 在Manjaro上,键入以下内容:& f8 I! I0 R z) N' M1 F" |% W/ R! F sudo pacman -Syu fd! p5 s: E# m0 N- F# U9 f 2 s; J! V+ k; u* z6 Z- n& R6 } fd与fdfind 为避免混淆,我们在Ubuntu测试PC上保留了命令的默认名称fdfind。fd和fdfind是完全相同的命令,如下面的示例所示(如果您要求fdfind显示其版本,则称其为“ fd”): linuxmi@linuxmi:~/www.linuxmi.com$ fdfind --version
在示例中,我们将使用Ubuntu“ fdfind”。在其他Linux发行版中,可以键入“ fd”而不是“ fdfind”来保存一些击键。 ! W5 F2 P4 ]3 R5 F 使用fd进行简单搜索 5 L. T1 I! V& v* W, \ 如果使用不带命令行选项的fd,则其行为类似于ls,不同之处在于它默认情况下在子目录中列出文件。输入以下内容:linuxmi@linuxmi:~/www.linuxmi.com$ fdfind, c: \. l# i7 c5 U( j) L0 `
对于不同的文件类型和目录,输出以不同的颜色显示。! t S6 U/ c9 C0 ] 要查看特定类型的文件,请使用-e(扩展名)选项。请注意,您不必在扩展名前加句点(.),也不区分大小写。; s K; V* C' w8 G+ u9 ^ 例如,您可以键入以下内容:. O& q; K* m& ^9 F) w linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -e png
现在,列出的唯一文件是PNG图像文件。 要查找单个文件,请在命令行上键入其名称,如下所示: linuxmi@linuxmi:~/www.linuxmi.com$ fdfind linuxmi.png
找到该文件,并且该文件恰好在子目录中。我们不必告诉fd进行递归搜索。 要在特定目录中开始搜索,请在命令行上包含文件路径。以下命令将在“/etc”目录中开始搜索,并查找文件名中包含“passwd”的文件:2 K1 P3 Q, {' ~2 c* p- E linuxmi@linuxmi:~/www.linuxmi.com$ fdfind passwd /etc
在这里,我们搜索所有C源代码文件的名称中包含“linuxmi”的文件:. I( Z8 s- V" F/ W" K linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -e c linuxmi 找到了3个匹配的文件。! Z9 b1 s! x; d
x. k b9 l5 L0 s 文件类型和区分大小写- s# s% {7 g) \ 9 E2 J5 G/ l3 B2 D! ~& b 您可以要求fd查找目录,文件(包括可执行文件和空文件)以及符号链接。您可以使用-t(type类型)选项,然后使用以下字母之一进行操作:
下面寻找一个名为images的目录: linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -td images
找到匹配项,在当前目录下的一个子目录中。 让我们看看区分大小写如何与搜索模式一起工作。我们键入以下内容首先搜索文件名中包含“linux”的文件,然后搜索文件名中包含“Linux”的文件: linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -tf linux
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -tf Linux
在第一个命令中,我们使用了小写搜索模式,这导致fd以不区分大小写的方式进行操作。这意味着“linux”和“Linux”都是有效匹配。 第二个命令包含一个大写字符,这导致fd以区分大小写的方式进行操作。这意味着只有“Linux”是一个有效匹配。 命令执行 fd命令允许您启动另一个命令并在找到的每个文件上执行它。 假设我们知道源代码目录树中某处有一个Zip文件。我们可以使用以下命令来查找它,该命令搜索具有ZIP扩展名的文件: linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip
使用-x(exec)选项,您可以将找到的每个文件传递给另一个命令,以供其处理。例如,我们可以键入以下内容来调用unzip实用程序以解压缩我们的ZIP文件(“ {}”是代表找到的文件的占位符): linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip -x unzip {} 这将解压缩当前工作目录中的文件。如果我们想把它解压缩到包含ZIP文件的目录中,我们可以使用以下占位符之一:
为了找到我们的ZIP文件并将其解压缩到包含它的目录中,我们可以使用unzip -d(目录)选项,并传入父目录占位符({//}): linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip -x unzip {} -d {//}
然后将ZIP文件定位并解压缩到其父目录中。
4 v0 I9 O( \. d/ l- W) r 总结 这是对fd命令的简要回顾,一些用户可能会发现fd命令更容易使用,也更快。正如本文前面提到的,fd并不是完全替代find,而是提供简单的用法、更容易的搜索和更好的性能。在您的武器库中,fd不需要太多的空间,是一个很好的工具。 |
微信公众号
手机版