一.文件搜索命令locate

locate 文件名

在后台数据库中按文件名搜索,搜索速度最快

/var/lib/mlocate

#locate命令所搜索的后台数据库(数据库不会实时刷新,所以新建的文件马上使用localte命令是无法搜索到的,更新频率大概一天一次)

updatedb

#更新数据库(更新后就可以使用locate命令进行搜索了)

  • 缺点

1)只能搜索文件名

2)存在不搜索的文件或目录(可以使用vi /etc/updatedb.conf命令查看不搜索的部分有哪些,如图中不搜索的部分为yes那一行下面的所有内容,换句话说,打比方你在/tmp目录下创建了个文件,那么即使你updatedb后也是无法搜索到那个文件的)

二.命令搜索命令whereis与which

whereis 命令名

#搜索命令所在路径及帮助文档所在位置

选项:

-b:只查找可执行文件

-m:只查找帮助文件

限制条件:

只能搜索系统命令,不能搜索普通文件

which 命令

#搜索命令所在路径及别名

不是所有命令都有别名,所以使用which有时候会不显示别名

  • 注意事项:

shell自带的内置命令使用which或whereis是无法查找到可执行文件的例如cd命令,只有外部命令才可以使用which和whereis来进行查找,之所以pwd、ls这种命令可以直接使用是因为linux自动为这些系统命令配置了环境变量。如果是我们自己写的程序如果想不打绝对路径就运行的话需要自己手动配置环境变量,就像windows那样

可以使用命令”echo $PATH”来查看环境变量

三.字符搜索命令find

find [搜索范围] [搜索条件]

#搜索文件

find / install.log    #在/目录下遍历查找install.log文件

#避免大范围搜索,会非常消耗系统资源

选项

描述

例子

-name 按文件名搜索(区分大小写) find /root –name install.log
-iname 按文件名搜索(不区分大小写) find /root –iname install.log
-user 按所有者搜索(搜索属于所有者的所有文件) find /root –user root
-nouser 查找没有所有者的文件(搜索当前没有所有者的所有文件)
注意:
1./sys和/proc两个目录中如果存在没有所有者的文件请不要手动清除,因为他可能是内核直接产生的文件,内核直接产生的文件不一定会存在所有者
2.外来文件,比如拿U盘从windows中copy到linux中的
3.除了以上两种情况,其他没有所有者的文件可以全部清除,基本都是垃圾文件
find /root –nouser
-mtime 按修改时间查询文件
atime        文件访问的时间
ctime        修改文件属性的时间
mtime       修改文件内容的时间
find /var/log/ –mtime +10
#查找10天前修改的文件
-10         10天内修改的文件
10           10天当天修改的文件
+10        10天前修改的文件
-size 按文件大小查询
-a and 逻辑与,两个条件都满足
-o or    逻辑或,两个条件满足一个即可

-exec/-ok 命令 {}\;    对搜索结果执行操作,非常有用
注意事项:
1.也可以按照M字节去查询,但是这里有个注意事项,k是小写M要写大写才可以,这个要严格区分大小写
2.如果不加单位,默认的单位是扇区单位也就是512kb,计算十分麻烦

find . –size 25k
#当前目录查询文件大小是25kb的文件
-25k       小于25kb的文件
  25k       等于25kb的文件
+25k      大于25kb的文件

find /etc –size +20k –a –size –50k
#查找/etc目录下,大于20k并且小鱼50k的文件
find /etc –size -20k –o –size +50k

find /etc –size +20k –a –size –50k –exec ls –lh {} \;
#超找/etc目录下,大于20k小鱼50k的文件,并显示详细信息

-inum 按i节点查询文件(也就是ID号) find . –inum 262422
#查找节点是26244的文件
     

find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完美匹配,相当于是模糊查询例如:

通配符

描述

例子

* 匹配任意内容 find /root –name “install.log*”(之所以加了引号是有可能不会识别通配符)
匹配任意一个字符 find /root –name “ab?”
[] 匹配任意一个中括号内的字符 find /root –name “ab[cd]”

四.字符串搜索命令grep

grep [选项]  字符串 文件名

#在文件当中匹配符合条件的字符串

选项

说明

例子

    grep “size” test.txt
在test.台下听众搜索包含size这个字符串的行
-i 忽略大小写 grep –i “size” test.txt
在test.台下听众搜索包含size这个字符串的行,不区分大小写
-v 排除指定字符串 grep –v “size” test.txt
在test.台下听众搜索包不含size这个字符串的行

五.find命令与grep命令的区别

find:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是万全匹配

grep:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式包时包含匹配

五、Linux学习之文件搜索命令的更多相关文章

  1. Linux学习日志--文件搜索命令

    开头总结: 学习了Linux中的文件搜索命令find和locate,系统搜索命令whereis 和which ,字符串搜索命令grep,find和locate的差别和使用方法格式,什么是path环境变 ...

  2. Linux学习之文件搜索命令

    一.文件搜索命令locate locate 文件名 在后台数据库中按文件名搜索,搜索速度最快 /var/lib/mlocate #locate命令所搜索的后台数据库(数据库不会实时刷新,所以新建的文件 ...

  3. Linux 学习 (三) 文件搜索命令

    Linux达人养成计划 I 学习笔记 locate 文件名 搜索速度比较快 只能根据文件名搜索 搜索的是保存在 /var/lib/mlocate 的数据库(每天更新一次) 新建文件需要执行 updat ...

  4. Linux常用命令学习2---(文件搜索命令locate find、命令搜索命令whereis which、字符串搜索命令grep、帮助命令man)

     1.文件搜索命令:locate [文件名]    在后台数据库中按文件名搜索,搜索速度比find快,耗费资源更少    例子:locate test.txt,就会显示文件名包含 test.txt的所 ...

  5. [Linux] 013 其他文件搜索命令

    1. 文件搜索命令:locate 命令名称:locate 命令所在路径:/bin/locate 执行权限:所有用户 语法:locate 文件名 功能描述:在文件资料库中查找文件 范例: $ locat ...

  6. Linux 学习 (二) 文件处理命令

    Linux达人养成计划 I 学习笔记 ls [选项] [文件或目录] -a: 显示所有文件,包括隐藏文件 -l: 显示详细信息 -d: 查看目录属性 -h: 人性化显示文件大小 -i: 显示inode ...

  7. linux 学习2 文件处理命令

    ____命令格式与目录处理命令 ____目录处理命令 ____文件处理命令 ____链接命令 ls list 菜单 命令 [-选项][参数] 选项:调整功能,多个选项可以写在一起,不分顺序. 简化选项 ...

  8. linux中find文件搜索命令

    find 解释 命令名称:find 命令所在路径:/bin/find 执行权限:所有用户 功能描述:文件搜索 语法 find [搜索范围] [匹配条件] 匹配条件: -name 文件名(区分大小写) ...

  9. linux笔记_文件搜索命令

    一.locate命令 locate命令属于mlocate包,如果执行locate filename提示命令未找到执行安装mlocate包 # yum -y install mlocate 安装后执行l ...

随机推荐

  1. 为什么每次进入命令都要重新source /etc/profile 才能生效?

    https://segmentfault.com/q/1010000005981201

  2. Leetcode题库——20.有效的括号

    @author: ZZQ @software: PyCharm @file: IsValid.py @time: 2018/9/16 20:20 要求: 给定一个只包括 '(',')','{','}' ...

  3. 【动态规划】POJ-3616

    一.题目 Description Bessie is such a hard-working cow. In fact, she is so focused on maximizing her pro ...

  4. p4 : a problem about "./behavioral-model"

    当sudo ./behavioral-moel时候会发生这个 这个时候记得要先在 p4factory目录下先执行一下这个 sudo ./tools/veth_setuo.sh 再去执行sudo ./b ...

  5. 《软件工程和Python》PYTHON效能分析和Django

    资料汇总网站:http://www.yzhiliao.com/my/course/55 一..作业下面两个题目任选一题: (1)运用jieba库分词(或者你喜欢的其他库),并把代码发到git上去(不发 ...

  6. 父元素如果为none,子元素也是看不到的

    1.最近遇到一个问题,就是获取一个子元素的offsetwidth 的值总是为0 .原因是因为把父元素给设置成none了. 2.给元素赋值宽高 div.style.width=330+'px' 要加上p ...

  7. JMeter性能测试基础 (2) - 变量的使用

    在使用JMeter进行性能测试时,一般情况下要保证样本容量尽可能大,这样才能得到一个比较合理的结果.也就是说,我们不能只对同一个URL进行多次访问,而是要对统一模块下尽可能多的URL进行访问,以取得相 ...

  8. Pytest - 进阶功能fixture

    1. 概述 Pytest的fixture功能灵活好用,支持参数设置,便于进行多用例测试,简单便捷,颇有pythonic.如果要深入学习pytest,必学fixture. fixture函数的作用: 完 ...

  9. 抽奖系统 random()

    random() 方法可返回介于 0 ~ 1 之间的一个随机数. document.write(parseInt(10*Math.random())); //输出0-10之间的随机整数document ...

  10. .net对Redis集群的调用(FrameWork版本4.0)

    使用 StackExchange.Redis 实现.net对Redis集群的调用,方法如下: 1.打开 项目-管理NuGet程序包 2.在打开界面搜索StackExchange.Redis,找到Sta ...