Linux笔记04-文件搜索命令

文章详细介绍了Linux系统中常用的文件搜索命令find的使用方法,包括根据文件名、大小、所有者、所属组、时间属性和i节点等条件进行搜索。此外,还提到了其他文件搜索命令如locate、which和whereis的功能和用法,以及grep命令在搜索文件内容中的应用。
摘要由CSDN通过智能技术生成

目录

【文件搜索命令:find】

【其他文件搜索命令】


​​​​​​

【文件搜索命令:find】

命令名称:find

命令所在路径:/bin/find

执行权限:所有用户

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

功能描述:文件搜索

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

【根据文件名搜索 -name】

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

扩展:

① -iname 不区分大小写

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

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

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

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

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

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

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

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

+n 大于 -n 小于 n 等于

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

【根据所有者查找 -user】

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

【根据所属组查找 -group】

案例略

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

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

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

-amin 访问时间 access

-cmin 文件属性 change

-mmin 文件内容 modify

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

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

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

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

find /home/ -type d
find /home/ -type f
find /tmp/ -type l

【根据i节点查找 -inum 】

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

【多条件查找】

在/etc下查找大于80MB小于100MB的文件

$ find /etc -size +163840 -a -size -204800

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

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

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

【查找文件并执行某项操作(例如:显示其详细信息)】

记住固定格式:-exec 命令 {} \; 或 -ok 命令 {} \;

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

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

find /tmp/ -name 1.txt -exec rm {} \;

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

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

【其他文件搜索命令】

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

命令名称:locate

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

执行权限:所有用户

语法:locate 文件名

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

范例:$ locate inittab

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

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

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

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

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

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

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

命令名称:which

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

执行权限:所有用户

语法:which 命令

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

范例:$ which ls

alias : 别名

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

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

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

命令名称:whereis

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

执行权限:所有用户

语法:whereis [命令名称]

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

范例:$ whereis ls

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

命令名称:grep

命令所在路径:/bin/grep

执行权限:所有用户

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

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

-i 不区分大小写

-v 排除指定字串

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农兴哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值