find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
find常用操作
查找 | 原形 | 例子 | 说明 | |
文件 | find + “路径” +“ –name” + “文件名” | find “/” -name “httpd.conf” | “-name”文件名字参数 | 从(from)哪里(路径)找什么(文件名) |
文件内容 | find + “路径” +“ –name” + “文件名”+ | grep + “字符” | find . -name "*.*" |xargs grep 'xiaoshou' > list.txt | grep的工作方式是这样的,它在一个或多个文件中搜索字符串”搜索内容串”。如果”搜索内容串”包括空格,则必须被引用,”搜索内容串”后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容 |
Find命令算项参数 | |||||
查找 | 参数 | 说明 | 例子 | ||
以时间方式 | -amin n | 查找系统中最后N分钟访问的文件 | find / -amin -10 # 查找在系统中最后10分钟访问的文件 | ||
-atime n | 查找系统中最后n*24小时访问的文件 | ||||
-cmin n | 查找系统中最后N分钟被改变状态的文件 | ||||
-ctime n | 查找系统中最后n*24小时被改变状态的文件 | ||||
-mmin | 查找在系统中最后n分钟里修改过的文件 | ||||
-mtime | 查找在系统中最后n*24小时里修改过的文件 | ||||
以系统模式方式 | -empty | 查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹 | find / -empty # 查找在系统中为空的文件或者文件夹 | ||
-false | 查找系统中总是错误的文件 | ||||
-fstype type | 查找系统中存在于指定文件系统的文件,例如:ext2 | find / -user fred #查找在系统中属于FRED这个用户的文件 | |||
-gid n | 查找系统中文件数字组 ID 为 n的文件 | ||||
-group gname | 查找系统中文件属于gnam文件组,并且指定组和ID的文件 | ||||
-user name | 查找在系统中属于name这个用户的文件 | ||||
-name | 指定了文件名所必须匹配的字符串可以使用\(和\)将多个条件连接成一个条件进行相应的搜索 | 如find . \( –name “*.txt” –o –name “*.pdf” \) -print | |||
-path | 可以使用通配符来匹配文件路径和文件 | -name总是用给定的文件名进行匹配,-path则将文件路径作为一个整体进行匹配 | |||
-regex | 参数和 -path类似,只不过-regex是基于正则表达式来匹配文件路径的 | ||||
! | 否定参数 | 查找所以不以.txt结尾的文件名。find . ! –name “*.txt” –print | |||
-maxdepth | 限定目录搜索的深度 | ||||
-type | 按文件类型搜索普通文件 f 符号链接l 目录d 字符设备 c 块设备 b 套接字 s FIfo p | ||||
-delete | 删除匹配的文件 | ||||
grep的工作方式是这样的,它在一个或多个文件中搜索字符串”搜索内容串”。如果”搜索内容串”包括空格,则必须被引用,”搜索内容串”后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
grep -[acinv]‘命令算项’+ '搜索内容串' filename
grep命令算项参数 | ||
参数 | 说明 | 例子 |
-a | 以文本文件方式搜索 | |
-c | 计算找到的符合行的次数 | |
-i | 忽略大小写 | |
-n | 顺便输出行号 | |
-v | 反向选择,即找没有搜索字符串的行 | |
-? | 同时显示匹配行上下的?行 | grep -2 pattern filename同时显示匹配行的上下2行 |
-b | 打印匹配行前面打印该行所在的块号码 | |
-f File,--file=File | 从文件中提取”搜索内容串” | 空文件中包含0个”搜索内容串”,所以什么都不匹配 |
-h | 当搜索多个文件时,不显示匹配文件名前缀 | |
-q | 取消显示,只返回退出状态。 | 0则表示找到了匹配的行 |
-l | 打印匹配”搜索内容串”的文件清单 | |
-L | 打印不匹配”搜索内容串”的文件清单 | |
-s | 不显示关于不存在或者无法读取文件的错误信息 |
其中搜索串可以是正则表达式! (vim、grep、awk 、sed 都支持正则表达式)
grep正则表达式元字符集 | ||
符号 | 意义 | 例子 |
^ | 锚定行的开始 | '^grep' 匹配所有以grep开头的行。 |
$ | 锚定行的结束 | 'grep$'匹配所有以grep结尾的行 |
. | 匹配一个非换行符的字符 | 'gr.p'匹配gr后接一个任意字符,然后是p |
* | 匹配零个或多个先前字符 | *grep'匹配所有一个或多个空格后紧跟grep的行。 |
[] | 匹配一个指定范围内的字符 | 如'[Gg]rep'匹配Grep和grep |
[^] | 匹配一个不在指定范围内的字符 | [^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行 |
\(..\) | 标记匹配字符 | 如'\(love\)',love被标记为1 |
\< | 锚定单词的开始 | 如:'\<grep'匹配包含以grep开头的单词的行 |
\> | 锚定单词的结束 | 如'grep\>'匹配包含以grep结尾的单词的行 |
x\{m\} | 重复字符x,m次 | 如:'0\{5\}'匹配包含5个o的行 |
x\{m,\} | 重复字符x,至少m次 | 'o\{5,\}'匹配至少有5个o的行 |
x\{m,n\} | 重复字符x,至少m次,不多于n次 | 如:'o\{5,10\}'匹配5--10个o的行 |
\w | 匹配文字和数字字符也就是[A-Za-z0-9] | 'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。 |
\W | \w的反置形式,匹配一个或多个非单词字符,如点号 | |
\b | 单词锁定符 | 如: '\bgrep\b'只匹配grep |