命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
功能描述:进行文件搜索
基本语法:find [搜索范围] [匹配条件]
在linux系统中,目录(也叫文件夹)也是文件,通过 find 查找文件时,自然也会查找到符合条件的目录。
find 命令可以使用的通配符包含:
? 匹配一个任意字符。
* 匹配0个或任意个任意字符,也就是说匹配任何内容。
[] 匹配中括号内的任意一个字符。[a-z] 匹配一个小写字母。
[^] 匹配不是中括号内的一个字符。[^0-9] 匹配一个非数字字符。
说明: 文件搜索命令 find 会占用较多的系统资源,尽量不要在服务器访问高峰时使用。最好的方法是合理规划Linux系统的目录结构和文件资源,不要乱放。
常见用法:
find /etc -name init
根据文件名搜索,在目录 /etc 中查找文件init(完整匹配)
find /etc -iname init
不区分大小写,在目录 /etc 中查找文件init
find /etc -name *init*
在目录 /etc 中查找文件名中包含init字符串的所有文件
find /etc -name init*
在目录 /etc 中查找文件名以init开头的所有文件
find /etc -name init???
在目录 /etc 中查找文件名以init开头且后面跟有3个字符的所有文件
find / -size +204800
在根目录中查找大于100MB的文件
(+n 表示大于;-n 表示小于;n表示等于。n的单位是数据块,一个数据块的大小是0.5KB)
find /home -user user01
在 /home 目录中,查找所有者为user01的所有文件
find /etc -cmin -10
在 /etc 目录中,查找10分钟内被修改过文件属性的所有文件
find /etc -amin -10
在 /etc 目录中,查找10分钟内被访问过的所有文件
find /etc -mmin -10
在 /etc 目录中,查找10分钟内被修改过文件内容的所有文件
find /etc -size +102400 -a -size -204800
在 /etc 中查找大于50MB且小于100MB的所有文件
(-a 表示两个条件同时满足;-o 表示任意一个条件满足即可)
find /etc -name init* -a -type f
在 /etc 中查找以init开头的文件(只能是普通文件,不能是目录或软链接)
(-type表示根据文件类型查找:f 普通文件;d 目录;l 软链接文件)
find /etc -name inittab -exec ls -l {} \;
在 /etc 中查找inittab文件,并显示其详细信息
-exec 命令 {} \; 表示对搜索结果直接执行后续的命令
-ok 命令 {} \; 表示对搜索结果执行后续命令(有提示),可以进行确认(y)或取消(n)
find . -inum 262635
在当前目录中,根据i节点号查找,i节点号为262635的文件
命令名称:locate
命令所在路径:/bin/locate
执行权限:所有用户
功能描述:在文件资料库中查找文件(效率比find高)
说明: locate是在自身的文件资料库中查找文件,占用的系统资源少,效率比find高。
如果你的Linux系统中,没有locate命令,可先用yum快速安装mlocate。
yum -y install mlocate
安装完mlocate之后,请执行下面的命令更新文件资料库:
updatedb
常见用法:
locate inittab
查找绝对路径中包含字符串inittab的所有文件
locate -i a.txt
查找绝对路径中包含字符串a.txt的所有文件(不区分大小写)
关于 locate 命令需要注意两点:
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
功能描述:查找命令所在的目录及命令的别名信息
操作对象:命令
基本语法:which 命令
命令也是一种文件,只不过它是一种可执行文件。查找命令文件的所在目录,也可以使用find(如:find / -name ls),但前面说过,find命令比较占用系统资源且效率较低。因此,对命令进行查找时,我们一般用which命令。
常见用法:
which ls
查找ls命令的所在目录,以及ls的别名信息
which rm
查找rm命令的所在目录及别名信息
which useradd
查找useradd命令的所在目录及别名信息
命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
功能描述:查看命令(或配置文件)所在的目录以及帮助文档的路径
操作对象:命令或配置文件
基本语法:whereis 命令或配置文件
常见用法:
whereis ls
查找ls命令的所在目录,以及帮助手册的路径
whereis service
查找service命令的所在目录,以及帮助手册的路径
whereis services
查找services配置文件的所在目录,以及帮助手册的路径
whereis passwd
查找passwd命令和passwd配置文件的所在目录,以及帮助手册的路径
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
功能描述:在指定的文件中匹配查找包含某个字符串的所有行
-i 不区分大小写
-n 显示行号
-v 显示没有匹配到的行
-r 递归搜索,用于目录
操作对象:文件
基本语法:grep [-选项] 要搜索的字符串 指定的文件
常见用法:
# 在/root/install.log日志文件中,查找字符串mysql,输出匹配的行
grep mysql /root/install.log
# 在/etc/inittab文件中,查找字符串multiuser(不区分大小写),输出匹配的行
grep -i multiuser /etc/inittab
# 在/etc/inittab文件中,查找不是以#开头的所有行
grep -v ^# /etc/inittab
# 在/root/install.log日志文件中,查找字符串mysql,输出匹配的行
# 不区分大小写,显示行号
grep -in mysql /root/install.log
# 在/root/install.log日志文件中,查找字符串 "test mysql",输出匹配的行
# 匹配双引号(双引号需要转义)
grep '\"test mysql\"' /root/install.log
# 在当前目录中递归查找字符串mysql,输出匹配的行
grep -r mysql .
严格来说,grep命令并不是文件搜索命令,而是字符串搜索命令,它是用来在文件中查找字符串所在的行。