find命令支持标准的UNIX regex来匹配、包含或排除文件。您可以使用regex轻松地编写复杂的查询,同时find命令会对每一个/file/to/path列出的目录树进行递归下降,评估一个表达式。
查找命令排除或忽略文件语法
语法如下:

##################
## Basic syntax ##
##################
find /dir/to/search/ -options -name 'regex' -action
find /dir/to/search/ -options -iname 'regex' -action
find /dir/to/search/ -type f -name 'regex' -print
find /dir/to/search/ -type f -name \( expression \) -print

## ---------------------------------------------------------------------- ##
## The -and operator is the logical AND operator                          ## 
find /dir/to/search/ -type f -name 'expression -and expression' -print

## ---------------------------------------------------------------------- ##
## The -or operator is the logical OR operator.  The expression evaluates ##
## to true if either the first or the second expression is true.          ##
find /dir/to/search/ -type f -name 'expression -or expression' -print

例如:查找命令和逻辑运算符
找出所有名字以'c'或'asm'结尾的文件,输入。
$ find . -type f \( -iname "*.c" -or -iname "*.asm" \)
在这个例子中,找到/etc/目录下所有.conf和(.txt)文本文件。
`$ find . -type f ( -name "
.conf" -or -name "*.txt" ) -print`
如何在使用find命令搜索文件时或排除某些文件,比如.dot文件?_第1张图片

括号必须用反斜杠、"("和") "来转义,以防止它们被解释为特殊的shell字符。-type f选项强制find只搜索文件而不是目录。而-or操作符可以查找'.c'或'.asm'文件。
如何在搜索文件时忽略隐藏的.dot文件?
查找 .txt文件,但忽略隐藏的.txt文件,例如.vimrc或.data.txt文件:
`$ find . -type f ( -iname "
.txt" ! -iname ".*" )`

查找所有.dot文件,但忽略.htaccess文件:

$ find . -type f \( -iname ".*" ! -iname ".htaccess" \)

如果所检查的路径名与模式匹配,则此选项返回true。例如,在当前目录中找到所有* .txt文件,但不包括./Movies/、./Downloads/和./Music/文件夹:

cd $HOME
find . -type f -name "*.txt" ! -path "./Movies/*" ! -path "./Downloads/*" ! -path "./Music/*" 
## add -ls option to get ls -l kind of output ##
find . -type f -name "*.txt" ! -path "./Movies/*" ! -path "./Downloads/*" ! -path "./Music/*" -ls

至此,我们学习了如何在Linux或类似Unix的系统上使用find命令时忽略特定的文件名。
A5互联https://www.a5idc.net/