你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux——fd是查找命令的一种更简单的替代方法

[复制链接]
gaosmile 发布时间:2020-10-19 16:19
在Linux上,fd是查找命令的一种更简单的替代方法。它有简化的语法,使用合理的默认值,现在让我们来看看吧。

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,请查看GitHub页面上的安装说明。
输入以下命令:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get install fd-find
微信图片_20201019161930.png
在Ubuntu中,命令是fdfind,以避免与另一个现有的实用程序发生名称冲突。如果希望它是fd,可以设置一个别名:
linuxmi@linuxmi:~/www.linuxmi.com$ alias fd=fdfind
微信图片_20201019161937.png
要使别名保持不变,以便在重新启动后仍然可用,请将其放入“ .bashrc”或“ .bash_aliases”文件中。
要在Fedora上安装fd,请键入以下命令:
sudo dfn install fd-find
在Manjaro上,键入以下内容:
sudo pacman -Syu fd


fd与fdfind


为避免混淆,我们在Ubuntu测试PC上保留了命令的默认名称fdfind。fd和fdfind是完全相同的命令,如下面的示例所示(如果您要求fdfind显示其版本,则称其为“ fd”):
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind --version
微信图片_20201019161940.png
在示例中,我们将使用Ubuntu“ fdfind”。在其他Linux发行版中,可以键入“ fd”而不是“ fdfind”来保存一些击键。


使用fd进行简单搜索


如果使用不带命令行选项的fd,则其行为类似于ls,不同之处在于它默认情况下在子目录中列出文件。输入以下内容:linuxmi@linuxmi:~/www.linuxmi.com$ fdfind
微信图片_20201019161943.png
对于不同的文件类型和目录,输出以不同的颜色显示。
要查看特定类型的文件,请使用-e(扩展名)选项。请注意,您不必在扩展名前加句点(.),也不区分大小写。
例如,您可以键入以下内容:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -e png
微信图片_20201019161946.png
现在,列出的唯一文件是PNG图像文件。
要查找单个文件,请在命令行上键入其名称,如下所示:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind linuxmi.png
微信图片_20201019161949.png
找到该文件,并且该文件恰好在子目录中。我们不必告诉fd进行递归搜索。
要在特定目录中开始搜索,请在命令行上包含文件路径。以下命令将在“/etc”目录中开始搜索,并查找文件名中包含“passwd”的文件:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind passwd /etc
微信图片_20201019161952.png
在这里,我们搜索所有C源代码文件的名称中包含“linuxmi”的文件:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -e c linuxmi
找到了3个匹配的文件。
微信图片_20201019162000.png


文件类型和区分大小写


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

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

下面寻找一个名为images的目录:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -td images
微信图片_20201019162003.png
找到匹配项,在当前目录下的一个子目录中。
让我们看看区分大小写如何与搜索模式一起工作。我们键入以下内容首先搜索文件名中包含“linux”的文件,然后搜索文件名中包含“Linux”的文件:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -tf linux
微信图片_20201019162006.png
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -tf Linux
微信图片_20201019162009.png
在第一个命令中,我们使用了小写搜索模式,这导致fd以不区分大小写的方式进行操作。这意味着“linux”和“Linux”都是有效匹配。
第二个命令包含一个大写字符,这导致fd以区分大小写的方式进行操作。这意味着只有“Linux”是一个有效匹配。

命令执行

fd命令允许您启动另一个命令并在找到的每个文件上执行它。
假设我们知道源代码目录树中某处有一个Zip文件。我们可以使用以下命令来查找它,该命令搜索具有ZIP扩展名的文件:
linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip
微信图片_20201019162012.png
使用-x(exec)选项,您可以将找到的每个文件传递给另一个命令,以供其处理。例如,我们可以键入以下内容来调用unzip实用程序以解压缩我们的ZIP文件(“ {}”是代表找到的文件的占位符):
linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip -x unzip {}
这将解压缩当前工作目录中的文件。如果我们想把它解压缩到包含ZIP文件的目录中,我们可以使用以下占位符之一:
  • {} – 一个占位符,它将随着搜索结果的路径改变(wp-content/uploads/01.jpg)。
  • {.} – 类似于{},但不使用文件扩展名(wp-content/uploads/01)。
  • {/}:将被搜索结果的基本名称 (01.jpg)所取代的占位符。
  • {//}:发现路径的父目录(wp-content/uploading)。
  • {/.}:只有基本名称,没有扩展名(01)。

为了找到我们的ZIP文件并将其解压缩到包含它的目录中,我们可以使用unzip -d(目录)选项,并传入父目录占位符({//}):
linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip -x unzip {} -d {//}
微信图片_20201019162015.png
然后将ZIP文件定位并解压缩到其父目录中。
微信图片_20201019162018.png

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


收藏 评论0 发布时间:2020-10-19 16:19

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版