Linux find命令的替代品fd命令
fd命令是Linux中find命令的一个流行的替代品。它是find的一个更快、更友好的版本,并且是用Rust编写的,以提高性能。fd的一些关键特性包括:使用正则表达式进行搜索的能力,指定搜索参数的更自然的语法,以及使用特定文件扩展名或名称进行搜索的能力。
安装
fd命令可以在Linux和macOS上使用你的发行版的软件包管理器进行安装。
在基于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
另外,你也可以从GitHub仓库中下载最新的版本,然后手动构建和安装,从源头上安装fd。
cargo install --force fd-find
一旦安装完毕,你可以在终端使用fd命令,就像你使用find命令一样。
基本用法
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允许你指定各种搜索条件,如文件名、扩展名、大小和修改时间,还允许你使用正则表达式搜索、遍历符号链接、控制目录遍历深度、反转搜索结果和对搜索结果执行命令。