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

不显示关于不存在或者无法读取文件的错误信息



其中搜索串可以是正则表达式!  (vimgrepawk sed 都支持正则表达式)

grep正则表达式元字符集

符号

意义

例子

^

锚定行的开始

'^grep' 匹配所有以grep开头的行。

$

锚定行的结束

'grep$'匹配所有以grep结尾的行

.

匹配一个非换行符的字符

'gr.p'匹配gr后接一个任意字符,然后是p

*

匹配零个或多个先前字符

*grep'匹配所有一个或多个空格后紧跟grep的行。

[]

匹配一个指定范围内的字符

'[Gg]rep'匹配Grepgrep

[^]

匹配一个不在指定范围内的字符

[^A-FH-Z]rep'匹配不包含A-FH-Z的一个字母开头,紧跟rep的行

\(..\)

标记匹配字符

'\(love\)'love被标记为1

\<

锚定单词的开始

:'\<grep'匹配包含以grep开头的单词的行

\>

锚定单词的结束

'grep\>'匹配包含以grep结尾的单词的行

x\{m\}

重复字符xm

如:'0\{5\}'匹配包含5o的行

x\{m,\}

重复字符x,至少m

'o\{5,\}'匹配至少有5o的行

x\{m,n\}

重复字符x,至少m次,不多于n

如:'o\{5,10\}'匹配5--10o的行

\w


匹配文字和数字字符也就是[A-Za-z0-9]

'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p

\W


\w的反置形式,匹配一个或多个非单词字符,如点号


\b

单词锁定符

: '\bgrep\b'只匹配grep