查找命令排除或忽略文件(例如,忽略所有隐藏的.点文件)
时间:2020-01-09 14:16:26 来源:igfitidea点击:
使用find命令搜索文件时,如何忽略所有隐藏的.点文件?
在运行Linux或UNIX find命令时如何忽略或排除某些文件?
find命令支持标准的UNIX正则表达式来匹配,包含或排除文件。
您可以使用regex轻松编写复杂的查询,而find命令以递归的方式列出列出的每个/file/to/path的目录树,从而评估表达式。
查找命令排除或忽略文件语法
语法如下:
################## ## Basic syntax ## ################## find /dir/to/search/ -options -name 'pattern' -action find /dir/to/search/ -options -iname 'pattern' -action find /dir/to/search/ -type f -name 'pattern' -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
括号必须用反斜杠 \(
and \)
进行转义,以防止将其解释为特殊的shell字符。
-type f选项强制查找仅搜索文件而不搜索目录。
-or运算符可以找到.c或.asm文件。
了解查找命令运算符
操作员根据测试和操作构建一个复杂的表达式。
运算符按降序排列:
(expr) | 强制优先级。如果expr为true,则为true |
expr -not expr``! expr | 如果expr为假则为真。在某些shell中,有必要保护!从shell解释中引用它。 |
expr1-和expr2 | expr2如果expr1为假,则不进行评估。 |
expr1-或expr2 | expr2如果expr1为true,则不评估。 |
警告!-or,-and和-not运算符不适用于所有版本的find。
通常,GNU find支持所有选项。
如何在搜索文件时忽略隐藏的.dot文件?
查找* .txt文件,但忽略隐藏的.txt文件,例如.vimrc或.data.txt文件:
$ find . -type f \( -iname "*.txt" ! -iname ".*" \)
查找所有.dot文件,但忽略.htaccess文件:
$ find . -type f \( -iname ".*" ! -iname ".htaccess" \)
-path选项
如果所检查的路径名与模式匹配,则此选项返回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