当前位置: 首页 > 科技观察

如何在Linux上用fd替换find

时间:2023-03-16 11:52:29 科技观察

fd命令是find命令的流行且用户友好的替代命令。许多Linux程序员在工作中每天都会使用find命令。但是find给出的文件系统条目是有限的,如果你做很多查找操作,它甚至不会很快。因此,我更喜欢使用用Rust编写的fd命令,因为它提供了合理的默认值,适用于大多数用例。正如它的自述文件所说,“fd是一个用于在文件系统中查找条目的程序。它是find的简单、快速且用户友好的替代品。”它具有并行遍历目录的功能,可以一次进行多个目录搜索。它支持正则表达式(regex)和基于通配符的模式。安装fd在Linux上,您可以从您的存储库安装fd(可用软件包列表可以在Repology的fd页面上找到)。例如,在Fedora上:$sudodnfinstallfd-find在macOS上,您可以使用MacPorts或Homebrew。或者,您可以使用Rust的Cargo包管理器:$cargoinstallfd-find要使用fd进行简单搜索,运行fd后跟要搜索的名称,例如:$fdshregistry/src/github.com-1ecc6299db9ec823/cc-1.0.67/src/bin/gcc-shim.rsregistry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.bashregistry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.fishregistry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.zshregistry/src/github.com-1ecc6299db9ec823/exa-0.10.1/xtests/run.shregistry/src/github.com-1ecc6299db9ec823/git2-0.13.18/src/stash.rsregistry/src/github.com-1ecc6299db9ec823/libc-0.2.94/src/unix/solarishregistry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/cmake/SelectHashes.cmakerregistry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/include/git2/stash.hregistry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/include/git2/sys/hashsig.hregistry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/backport.shregistry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/leaks.shregistry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/valgrind.shregistry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/src/config_snapshot.c[…]如果想搜索特定目录,可以将目录路径作为fd的第二个参数传递,例如:$fdpasswd/etc/etc/pam.d/passwd/etc/passwd/etc/passwd-/etc/security/opasswd要搜索特定的文件扩展名,请使用-e作为选项示例:$fd。'/home/ssur/exa'-emd/home/ssur/exa/README.md/home/ssur/exa/devtools/README.md/home/ssur/exa/man/exa.1.md/home/ssur/exa/man/exa_colors.5.md/home/ssur/exa/xtests/README.md$您还可以提供-x或-X来执行命令。-x/--exec:为每个搜索结果运行(并行)外部命令的选项。-X/--exec-batch:以所有搜索结果作为参数启动外部命令的选项。例如,要递归查找所有ZIP存档并解压缩它们:$fd-ezip-xunzip或者,要列出特定目录中在过去n天内更改的所有文件,请使用--changed-within选项:$fd。'/home/ssur/Work/'--changed-within10d/home/ssur/Work/wildfly/connector/src/main/java/org/jboss/as/connector/subsystems/data_sources/JdbcDriverAdd.java/home/ssur/Work/wildfly/connector/src/main/java/org/jboss/as/connector/subsystems/data_sources/JdbcExample.java[...]并搜索在特定天数之前修改的所有文件,使用--changed-before选项:$fd。'/home/ssur/Work/'--changed-before365d这里,.用作(常规)通配符,指示fd返回所有文件。要了解有关fd功能的更多信息,请查看GitHub上的文档。总结我特别喜欢fd的一件事是默认情况下搜索模式不区分大小写,这使得即使您不确切了解要查找的内容也可以更轻松地找到内容。更好的是,如果模式包含大写字符,它会自动切换到区分大小写。另一个好处是它使用颜色编码来突出显示不同的文件类型。如果您已经在使用这个出色的Rust工具,请在评论中告诉我们您的想法。