一.文件搜索命令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. Python20-Day06

    常用模块 一.random模块 import random # print(random.random()) #打印0-1之间的小数 # print(random.randint(1,3)) #大于等 ...

  2. linux命令系列 grep

    grep, egrep, fgrep - print lines matching a pattern SYNOPSIS grep [OPTIONS] PATTERN [FILE...] grep [ ...

  3. 使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)

    1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip ...

  4. teamwork 2

    1.访问上学期项目团队,学习他们的得失. 上学期学长们有一个项目是学霸系统,在看过了学长们的相关博客后,我们可以感受到学长们确实花费了不少心思,也看到了许多值得我们学习的地方. 首先,学长们在项目开始 ...

  5. 11.15 Daily Scrum

    今天是假期回来的第一个周末,也是我们团队的又一次进度汇总总结和调试工作开展,鉴于一周以来大家的工作有了很大的成果,所以,本次召开的会议主旨在于解决一些开发方面的细节问题,达成共识,为日后进一步的功能方 ...

  6. Linux基础入门--01~03

  7. Sprint会议2

    昨天:准备查找安卓APP开发的有关资料,安装有关软件 今天:自己制作一个安卓小程序,熟悉一下操作 遇到问题:安装遇到问题,环境配置出现问题

  8. HDU3629(凸四边形的个数)

    HDU 3629 计算几何 题目描述:给你n个点(4~700), 问你能够成多少个不同的凸四边形. 解题报告: 暴力的话C(700,4)必然超时,发现,任何一个凹包必然是其中一点在其它3点构成的三角形 ...

  9. 第一次spring冲刺第7天

    讨论成员:王俊凯.王逸辉.罗凯杰.马志磊 讨论问题:进行UI设计的详细讨论,虽然结果各有争议,但最终确定了较为简单的布局页面,并且开始收集精美页面的案例 冲刺尚未结束,同志还需努力,致力于最后.

  10. 获取ios设备的udid

    今天get的第二个技能~~~ UDID指的是设备的唯一设备识别符,ipa包未上架之前如果不添加udid是无法安装成功的.那么如何快速获取ios设备的udid呢? 今天get的方法是用蒲公英,网址:ht ...