fd:Linux find 命令的替代方案
fd 命令是 Linux 中流行的 find 命令替代方案。它比 find 命令更快、更用户友好,并且使用 Rust 编写以提高性能。fd 的一些主要功能包括:使用正则表达式搜索、更自然的搜索参数语法以及使用特定文件扩展名或名称进行搜索的能力。
安装
可以使用发行版的软件包管理器在 Linux 和 macOS 上安装 fd 命令。
在基于 Debian 的发行版上 -
sudo apt-get install fd-find
在 Fedora 和 Centos 上 -
sudo yum install fd-find
在 Arch Linux 和 Manjaro 上 -
sudo pacman -S fd
在 MacOS 上 -
brew install fd
或者,您还可以从源代码安装 fd,方法是从 GitHub 存储库下载最新版本,然后手动构建和安装它。
cargo install --force fd-find
安装完成后,您可以在终端中像使用 find 命令一样使用 fd 命令。
基本用法
fd 命令的基本用法类似于 find 命令。以下是一些示例 -
查找当前目录中的所有文件 -
fd .
查找具有特定名称的所有文件 -
fd testfile
查找具有特定扩展名的所有文件 -
fd -e txt
查找包含特定字符串的所有文件 -
fd -s "test file"
查找在过去 24 小时内修改的所有文件 -
fd -t f -mtime -1
查找所有是目录的文件 -
fd -t d
查找所有是符号链接的文件 -
fd -t l
fd 命令还有其他一些选项和参数,您可以使用它们来自定义搜索。您可以通过运行 fd --help 查看选项的完整列表。
指定搜索条件
fd 命令允许您指定各种搜索条件以缩小搜索结果范围。以下是一些示例 -
搜索与特定模式匹配的文件 -
fd -e txt -p "*.txt"
这将查找与模式“*.txt”匹配的所有文本文件。
搜索大于特定大小的文件 -
fd -L 10M
这将查找所有大于 10MB 的文件。
搜索小于特定大小的文件 -
fd -S 1K
这将查找所有小于 1KB 的文件。
搜索在特定时间范围内修改的文件 -
fd -t f -mtime +30 -mtime -60
这将查找所有在 30 到 60 天前修改的文件。
搜索具有特定所有者或组的文件 -
fd -u root
这将查找所有由用户“root”拥有的文件。
搜索具有特定权限的文件 -
fd -x +rwx
这将查找所有对所有用户具有读、写和执行权限的文件。
使用正则表达式搜索 -
fd -e txt -r "^[a-z]"
这将查找所有名称以小写字母开头的文本文件。
使用特定路径搜索 -
fd -p "/path/to/directory"
这将查找目录“/path/to/directory”及其子目录中的所有文件。
遍历符号链接
默认情况下,fd 命令在搜索文件时不会跟随符号链接。这意味着如果符号链接指向一个目录,fd 将不会搜索该目录的内容。但是,您可以使用 -L 选项告诉 fd 在搜索文件时跟随符号链接。
fd -L -t f
这将查找所有文件,包括符号链接指向的目录中的文件。
您还可以使用 -H 选项告诉 fd 仅在它们是命令行参数时才遍历符号链接。
fd -H -t f
当符号链接作为命令行参数传递时,这将查找所有文件,包括符号链接指向的目录中的文件。
您还可以使用 --no-ignore 选项查找默认情况下被忽略的目录中的文件,例如 .git 或 node_modules 文件夹。
fd --no-ignore -t f
您还可以使用 --hidden 选项查找目录中的隐藏文件。
fd --hidden -t f
您也可以组合选项以获得特定结果。
控制目录遍历深度
fd 命令允许您控制搜索文件时目录遍历的深度。默认情况下,fd 将递归搜索整个目录树,但您可以使用 -d 选项指定搜索的最大深度。
fd -d 2 -t f
这将仅查找当前目录和直接子目录中的所有文件。
您还可以使用 -D 选项指定搜索的最小深度。
fd -D 2 -t f
这将仅查找深度为两级或更深的所有文件。
您还可以组合 -d 和 -D 以获得更具体的结果。
fd -d 2 -D 3 -t f
这将仅查找深度在两级到三级之间的所有文件。
您也可以使用 -maxdepth 选项代替 -d,使用 -mindepth 选项代替 -D 以获得相同的结果。
fd -maxdepth 2 -mindepth 3 -t f
反转搜索结果
fd 命令允许您反转搜索结果,这意味着您可以查找与指定条件不匹配的文件。您可以使用 -I 选项反转搜索结果。
例如 -
fd -I -e txt
此命令将返回所有不是文本文件的文件。
另一个示例 -
fd -I -L 10M
此命令将返回所有小于 10MB 的文件。
您还可以使用 -not 选项反转搜索结果。
fd -not -e txt
此命令将返回所有不是文本文件的文件。
对搜索结果执行命令
fd 命令允许您对搜索结果执行命令。您可以使用 -e 选项指定应在搜索结果上执行的命令。
例如 -
fd -e cat
此命令将显示与搜索条件匹配的所有文件的内容。
另一个示例 -
fd -e rm
此命令将删除与搜索条件匹配的所有文件。
您还可以使用命令中的变量来表示搜索结果。变量 {} 将被搜索结果替换。
fd -e "cat {}"
此命令将显示与搜索条件匹配的所有文件的内容。
另一个示例 -
fd -e "mv {} /path/to/destination"
此命令将把与搜索条件匹配的所有文件移动到目录 /path/to/destination
结论
fd 命令是 Linux 中 find 命令的强大替代方案,它提供了一种更快、更用户友好的文件搜索方式。fd 允许您指定各种搜索条件,例如文件名、扩展名、大小和修改时间,以及允许您使用正则表达式搜索、遍历符号链接、控制目录遍历深度、反转搜索结果和对搜索结果执行命令。