一、命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法: find [搜索范围] [匹配条件]
$find /etc -name init -name 在某路径下根据文件名称搜索文件
$find /etc -iname ?init* -iname 在某路径下根据根据文件名称不区分大小写模糊搜索
$find /etc -size 204800 -size 或者 +size 表示文件大小小于或大于多少的文件,去掉 + -表示精确查找文件大写为多大的文件
$find /etc -cmin -5 -cmin 文件属性change 查找距现在不超过5分钟内文件属性被修改的文件
$find /etc -amin -5 -amin 访问时间access 查找距现在访问时间不超过5分钟的文件
$find /etc -mmin -5 -mmin 文件内容modify 查找距现在访问时间不超过5分钟文件内容被修改的文件
功能描述:文件搜索
最常用的选项操作范例:
1、根据文件或目录名称搜索(精确搜索和模糊匹配搜索)
$ find /etc -name init 在目录/etc中查找文件init
注:如果只知道文件名称的部分,可以通过占位符的方式进行拼接搜索,规则为:
* 号表示匹配任意个字符
?号表示匹配单个字符
例如:
1) $ find /etc -name *init* 表示在目录/etc中查找文件名称 含有init 的文件
2) $ find /etc -name init* 表示在目录/etc中查找文件名称 以init 开头的文件
3) $find /etc -name init? 表示在目录中查找文件名称以 init开头,且后面跟一个字符(或者说五个字符,前四个字符是init) 的文件
4) $ find /etc -name ?init 表示在目录/etc中查找文件名称以 init结尾的文件
2、根据文件名或目录,不区分文件名称中大小写进行搜索
$find /etc -iname init -iname 不区分文件名称大小写
注:如果不确定文件的大小写,可以用 -iname 选项代替-name
实例:
1) $ find /etc -iname init 会查找出/etc目录中 文件名称为init的文件或者 INIT 文件或者 Init文件等等
3、根据文件大小进行搜索
$find / -size +n 在根目录下查找大于n数据块个单位大小的文件
+n 大于 -n 小于 n等于
特别注意: 这里的n表示的是一个数字,单位是数据块,数据块和平常普通看到的文件大小的单位字节有所区别,
数据块和字节以及kb的换算关系为: 1个数据块 = 512字节 =0.5k
实例:
1) $ find / -size +204800 这里表示在根目录下搜索文件大小大于100MB的文件
2) $ find /etc -size -163840 -a -size -204800 在/etc下查找大于80MB 小于100MB的文件
特别补充!!!: -a 选项表示两个条件同时满足,a可理解为and
-o 选项表示两个条件满足任意一个即可,o可理解为or
3) $ find /etc -name inittab -exec ls -l {} \; 在/etc 下查找inittab文件并显示其详细信息
特别补充!!!: -exec/-ok 命令 {} \; 对搜索结果执行操作
特别注意连接符 -exec 表示执行完前面命令后继续执行后面的命令
-ok 表示执行完前面的命令结束后,系统会询问是否执行后面的命令
上述命令特别注意后面的 大括号符号和反斜杠以及分号结尾符,该符号为固定内容
例如:$ find /home -usr shenchao -ok rm {} \; 表示将/home目录下所有者为shenchao的所有文件删除,删除前有是否删除确认
4、根据文件或目录所有者(一般为文件或目录的创建者)搜索
$find /home -usr shenchao 在根目录下查找所有者为shenchao的文件
5、根据文件或目录的所属组进行搜索
$find /home -group meinv 在根目录下查找用户组为meinv组的文件
6、查找某个时间段内或外被修改过属性或者内容的文件:
实例:
1)$ find /etc -cmin -5 查找/etc目录中距现在5分钟内文件属性被修改过的文件
2) $ find /etc -amin -10 查找/etc目录中距现在10分钟内被访问过的文件
3) $ find /etc -mmin -30 查找/etc目录中距现在30分钟内文件内容被修改过的文件
7、根据文件类型进行查找,文件类型包括: 文件- f ; 目录-d ; 软链接文件-l
实例:
1) $ find /etc -name init* -a -type d 表示查找出/etc目录下名称以init开头 并且 文件类型为目录的 所有目录
2)$ find /etc -name init* -a -type f 表示查找出/etc目录下名称以init 开头 并且 文件类型为文件的 所有文件
8、根据文件i节点进行查找
实例;
1)$ find . -inum 31531 -exec rm {} \; 表示在当前目录下查找并删除i节点为31531开始的文件
2)如何确定一个文件是否有硬链接?
方法步骤: 先查找该文件的属性信息,确定该文件的 i 节点,然后在该文件所在的分区,搜索 i 节点为该数字的文件
所用原理: 一个文件的硬链接和文件本身一定在同一个分区内
命令:
其他文件搜索命令
二、文件搜索命令:locate
命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法:locate 文件名
功能描述:在文件资料库中查找文件,不是实时文件
范例:$ locate inittab
搜索快的原因:该命令直接搜索自己的文件库,而不是像其他搜索某个磁盘
locate命令的缺点:非实时查找命令;可以使用updatedb命令强制更新资料库,以使用locate搜索命令 对部分目录中的文件不进
行收录,比如/tmp
以上命令类似于windows中的工具everything
三、更精确的文件搜索命令:which
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which 命令
功能描述:搜索命令所在目录及别名信息,通过获取命令所在路径,可基本判断该命令的使用权限范围,比如,在sbin目录下的,说明只有root用户才有权限使用;
范例: $ which ls
$which cp
$ which rm
四、更精确的文件搜索命令:whereis
命令名称;whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis [命令名称]
功能描述:搜索命令所在目录及帮助文档路径
范例:$ whereis ls
注意:which 和whereis 命令是用于搜索 命令 所在路径的信息,which可查询命令的路径和别名信息,whereis命令可查询命令的路径和帮助文档所在的路径。通过路径是否在/sbin目录下,可确认是否只有root权限可用。通过帮助文档路径,可以帮助查找该命令更多信息
五、文件搜索命令:grep
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep -iv [指定字串] [文件]
-i 不区分大小写
-v 排除指定字串
功能描述:在文件中搜寻字符串的行并输出,搜索某个文件内的某些字符串所在一行的信息
范例:# grep mysql /root/install.log 表示查找/root目录下,install.log文件中 myssql 字符串所在行信息
注意:该命令也被称为文件搜索命令,但是该命令与find which whereis等命令不同,
以上命令是在Linux系统中,查找某个文件的属性等信息,是为了找到文件,而grep命令
是为了在某个确定的文件中查找某些字符串等的信息。
即 find locate 用于在大量目录中查找某个文件
而 which whereis 用于在大量目录中查找某个命令的路径
而 grep 用于在某个文件中搜索某个字符串
总结:-i 不区分大小写的选项在 find locate grep等多个命令中作用共通
在Linux很多配置文件中,有很多的# 开头的行,表示注释信息