Linux笔记04-文件搜索命令

◆ 文件搜索命令:find

命令名称:find

命令所在路径:/bin/find

执行权限:所有用户

语法:find [搜索范围] [匹配条件]

功能描述:文件搜索

使用建议:不要再服务器高峰时期使用find命令;搜索时范围越小越好。

【根据文件名搜索 -name】

$ find /etc -name init (在目录/etc中查找文件init)

扩展: ① -iname 不区分大小写

② 如果是全盘搜索就是:find / -name [文件名] (不建议)

Linux笔记04-文件搜索命令

注意:这样是精确搜索,如果是initabc 就不会被搜索到,如果需要模糊搜索,就是 *[关键词]*

Linux笔记04-文件搜索命令

分析扩展1: 查找以init开头的: init*

Linux笔记04-文件搜索命令

分析扩展2:查找以init开头,后面紧跟3个字符的: init???

Linux笔记04-文件搜索命令

原理:* 匹配多个字符,? 匹配单个字符

分析扩展3:默认搜索是区分大小写的,如果要忽略大小写,使用 -iname

Linux笔记04-文件搜索命令

【根据文件大小搜索 -size】

$ find / -size +204800 (在根目录下查找大于100MB的文件)

+n 大于 -n 小于 n 等于

备注:Linux中,文件大小的单位是:1数据块 = 512字节 = 0.5KB,因此 100MB = 102400KB = 204800 块

Linux笔记04-文件搜索命令

【根据所有者查找 -user】

$ find /home -user shenchao (在home目录下查找所有者为shenchao的文件)

Linux笔记04-文件搜索命令

【根据所属组查找 -group】

案例略

【根据时间属性查找 -amin/-cmin/-mmin】

$ find /etc -cmin -5 (在/etc下查找5分钟内被修改过属性的文件和目录)

+n 大于 -n 小于 n 等于(单位:分钟)

-amin 访问时间 access

-cmin 文件属性 change

-mmin 文件内容 modify

案例触发情景:想知道某个用户30分钟内在/etc 目录下 改动过哪些文件:

Linux笔记04-文件搜索命令

【根据文件类型查找 -type 】

f 文件 d 目录 l 软链接文件

案例:在/home目录下 查找所有的目录(d) 、所有文件(f);/tmp 目录下查找所有软链接(l)

Linux笔记04-文件搜索命令

【根据i节点查找 -inum 】

Linux笔记04-文件搜索命令

说明:用这个方法也可以查找任何一个文件的硬连接(因为硬连接不能跨分区),因为某个文件和它的硬连接的i节点是相同的。

【多条件查找】

在/etc下查找大于80MB小于100MB的文件 $ find /etc -size +163840 -a -size -204800

-a 两个条件同时满足 (and)

-o 两个条件满足任意一个即可 (or)

案例:查找 /etc 目录下 name为init 并且是目录的:

Linux笔记04-文件搜索命令

【查找文件并执行某项操作(例如:显示其详细信息)】记住固定格式:-exec 命令 {} \; 或 -ok 命令 {} \;

$ find /etc -name inittab -exec ls -l {} \; (在/etc下查找inittab文件并显示其详细信息)

Linux笔记04-文件搜索命令

当然,也可以对查找到的文件进行删除:

Linux笔记04-文件搜索命令

当然,也可以多条件查询后,对其执行某些操作(显示详情 ls -l):

Linux笔记04-文件搜索命令

这里。-ok 虽然和 -exec 类似,但也有区别,-ok 执行会有提示,一般在删除(rm) 时最好用 -ok

Linux笔记04-文件搜索命令

 

 

【其他文件搜索命令】

◆ 在文件资料库中查找文件:locate

命令名称:locate

命令所在路径:/usr/bin/locate

执行权限:所有用户

语法:locate 文件名

功能描述:在文件资料库中查找文件

范例:$ locate inittab

Linux笔记04-文件搜索命令

备注:如果出现 locate:can not stat() 错误,执行 updatedb 命令即可!

这种方式执行效率较快,因为是直接找资料库(类似于Windows下的everything 工具)。

但是看下面,明明新创建了一个文件但是locate却找不到,但是用find却能找到!

Linux笔记04-文件搜索命令

原因就是,创建了一个新文件,却没有更新资料库。这是需要使用上面说的 updatedb 命令,然后就可以找到了。

Linux笔记04-文件搜索命令

需要说明的是,保存在 /tmp 目录中的文件用locate 是找不到的:

Linux笔记04-文件搜索命令

默认情况下,locate 是区分大小写的,如果想要忽略大小写,使用 locate -i [文件名]

Linux笔记04-文件搜索命令

◆ 搜索命令所在目录及别名信息:which

命令名称:which

命令所在路径:/usr/bin/which

执行权限:所有用户

语法:which 命令

功能描述:搜索命令所在目录及别名信息

范例:$ which ls

Linux笔记04-文件搜索命令

alias : 别名

Rm 本身 是 /bin/rm 执行删除,本身是没有提示的,只不过 rm -i 是加了提示功能,然后给了rm 这个 “符号”

例如使用 /bin/rm [文件] 是不会提示的:

Linux笔记04-文件搜索命令

◆ 搜索命令所在目录及帮助文档路径:whereis

命令名称:whereis

命令所在路径:/usr/bin/whereis

执行权限:所有用户

语法:whereis [命令名称]

功能描述:搜索命令所在目录及帮助文档路径

范例:$ whereis ls

Linux笔记04-文件搜索命令

◆ 在文件中搜寻字串匹配的行并输出:grep

命令名称:grep

命令所在路径:/bin/grep

执行权限:所有用户

语法:grep -iv [指定字串] [文件]

功能描述:在文件中搜寻字串匹配的行并输出

-i 不区分大小写

-v 排除指定字串

范例:# grep mysql /root/install.log

Linux笔记04-文件搜索命令

如果要忽略大小写,使用 grep -i ...

Linux笔记04-文件搜索命令

如果要排除指定字符,使用 grep -v ... (注意:本例中^# 表示 以 # 开头,表示只查看某个配置文件中除去注释的内容(行) )

Linux笔记04-文件搜索命令

 

【2014年10月30日14:56:28】

【此笔记为作者原创发表于CSDN博客,转载请注明出处】

《Linux基础笔记》专栏列表:https://blog.csdn.net/rxbook/category_9986400.html