Merge pull request #9220 from wxy/20180606-A-friendly-alternative-to-the-find-tool-in-Linux

PRF&PUB:20180606 A friendly alternative to the find tool in Linux
This commit is contained in:
Xingyu.Wang 2018-06-21 18:13:13 +08:00 committed by GitHub
commit 27b57acbac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,8 +1,10 @@
Linux 中一种友好的 find 替代工具 Linux 中一种友好的 find 替代工具
====== ======
> fd 命令提供了一种简单直白的搜索 Linux 文件系统的方式。
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/find-file-linux-code_magnifying_glass_zero.png?itok=E2HoPDg0) ![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/find-file-linux-code_magnifying_glass_zero.png?itok=E2HoPDg0)
[fd][1] 是一个超快的,基于 [Rust][2] 的 Unix/Linux `find` 命令的替代。它不提供所有 `find` 的强大功能。但是,它确实提供了足够的功能来覆盖可能遇到的 80 的情况。诸如良好的规划和方便的语法、彩色输出、智能大小写、正则表达式以及并行命令执行等特性使 `fd` 成为一个非常有能力的后继者。 [fd][1] 是一个超快的,基于 [Rust][2] 的 Unix/Linux `find` 命令的替代。它不提供所有 `find` 的强大功能。但是,它确实提供了足够的功能来覆盖可能遇到的 80 的情况。诸如良好的规划和方便的语法、彩色输出、智能大小写、正则表达式以及并行命令执行等特性使 `fd` 成为一个非常有能力的后继者。
### 安装 ### 安装
@ -10,80 +12,68 @@ Linux 中一种友好的 find 替代工具
### 简单搜索 ### 简单搜索
`fd` 旨在帮助你轻松找到文件系统中的文件和文件夹。你可以用 `fd` 带上一个参数执行最简单的搜索,该参数就是你要搜索的任何东西。例如,假设你想要找一个 Markdown 文档,其中包含单词 `services` 作为文件名的一部分: `fd` 旨在帮助你轻松找到文件系统中的文件和文件夹。你可以用 `fd` 带上一个参数执行最简单的搜索,该参数就是你要搜索的任何东西。例如,假设你想要找一个 Markdown 文档,其中包含单词 `services` 作为文件名的一部分:
``` ```
$ fd services $ fd services
downloads/services.md downloads/services.md
``` ```
如果仅带一个参数调用,那么 `fd` 递归地搜索当前目录以查找与莫的参数匹配的任何文件和/或目录。使用内置的 `find` 命令的等效搜索如下所示: 如果仅带一个参数调用,那么 `fd` 递归地搜索当前目录以查找与莫的参数匹配的任何文件和/或目录。使用内置的 `find` 命令的等效搜索如下所示:
``` ```
$ find . -name 'services' $ find . -name 'services'
downloads/services.md downloads/services.md
``` ```
如你所见,`fd` 要简单得多,并需要更少的输入。在我心中用更少的输入做更多的事情总是胜利的。 如你所见,`fd` 要简单得多,并需要更少的输入。在我心中用更少的输入做更多的事情总是的。
### 文件和文件夹 ### 文件和文件夹
您可以使用 `-t` 参数将搜索范围限制为文件或目录,后面跟着代表你要搜索的内容的字母。例如,要查找当前目录中文件名中包含 `services` 的所有文件,可以使用: 您可以使用 `-t` 参数将搜索范围限制为文件或目录,后面跟着代表你要搜索的内容的字母。例如,要查找当前目录中文件名中包含 `services` 的所有文件,可以使用:
``` ```
$ fd -tf services $ fd -tf services
downloads/services.md downloads/services.md
``` ```
并找到当前目录中文件名中包含 `services` 的所有目录: 以及,找到当前目录中文件名中包含 `services` 的所有目录:
``` ```
$ fd -td services $ fd -td services
applications/services applications/services
library/services library/services
``` ```
如何在当前文件夹中列出所有带 `.md` 扩展名的文档? 如何在当前文件夹中列出所有带 `.md` 扩展名的文档?
``` ```
$ fd .md $ fd .md
administration/administration.md administration/administration.md
development/elixir/elixir_install.md development/elixir/elixir_install.md
readme.md readme.md
sidebar.md sidebar.md
linux.md linux.md
``` ```
从输出中可以看到,`fd` 不仅可以找到并列出当前文件夹中的文件,还可以在子文件夹中找到文件。很简单。你甚至可以使用 `-H` 参数来搜索隐藏文件: 从输出中可以看到,`fd` 不仅可以找到并列出当前文件夹中的文件,还可以在子文件夹中找到文件。很简单。
你甚至可以使用 `-H` 参数来搜索隐藏文件:
``` ```
fd -H sessions . fd -H sessions .
.bash_sessions .bash_sessions
``` ```
### 指定目录 ### 指定目录
如果你想搜索一个特定的目录,这个目录的名字可以作为第二个参数传给 `fd` 如果你想搜索一个特定的目录,这个目录的名字可以作为第二个参数传给 `fd`
``` ```
$ fd passwd /etc $ fd passwd /etc
/etc/default/passwd /etc/default/passwd
/etc/pam.d/passwd /etc/pam.d/passwd
/etc/passwd /etc/passwd
``` ```
在这个例子中,我们告诉 `fd` 我们要在 `etc` 目录中搜索 `passwd` 这个单词的所有实例。 在这个例子中,我们告诉 `fd` 我们要在 `etc` 目录中搜索 `passwd` 这个单词的所有实例。
@ -91,11 +81,10 @@ $ fd passwd /etc
### 全局搜索 ### 全局搜索
如果你知道文件名的一部分,但不知道文件夹怎么办?假设你下载了一本关于 Linux 网络管理的书,但你不知道它的保存位置。没有问题: 如果你知道文件名的一部分,但不知道文件夹怎么办?假设你下载了一本关于 Linux 网络管理的书,但你不知道它的保存位置。没有问题:
``` ```
fd Administration / fd Administration /
/Users/pmullins/Documents/Books/Linux/Mastering Linux Network Administration.epub /Users/pmullins/Documents/Books/Linux/Mastering Linux Network Administration.epub
``` ```
### 总结 ### 总结
@ -109,7 +98,7 @@ via: https://opensource.com/article/18/6/friendly-alternative-find
作者:[Patrick H. Mullins][a] 作者:[Patrick H. Mullins][a]
选题:[lujun9972](https://github.com/lujun9972) 选题:[lujun9972](https://github.com/lujun9972)
译者:[geekpi](https://github.com/geekpi) 译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出