Linux下的查找命令

       Linux下的查找命令有很多,常用的有grep、which、whereis、locate、find。使用linux系统难免会忘记文件所在的位置,小编就是如此尴尬。所以我们在文件系统上常常需要根据文件的各种属性去查找符合条件的文件,所以小编今天特意写一篇文章来介绍一下这几个常用的查找命令。

一、Grep(Global search REgular expression and Print out the line)

作用:是一种强大的文本搜索工具根据用户指定的“模式”对目标文件逐行进行匹配检查,并把匹配的行打印出来。

模式:由正则表达式字符及文本字符所编写的过滤条件。

语法:

grep [选项] pattern [文件名]

–color 高亮显示匹配到的字符串
-c 仅显示各指定文件中包含模式的总行数
-i 模式中字母不区分大小写
-h 不将包含模式的文件名显示在该行上
-l 仅显示包含模式的文件名
-n 显示模式所在行的行号
-s 指定文件若不存在或不可读,不提示错误信息
-v 显示不能被pattern匹配到的行

正则表达式

. 匹配任意一个字符
* 匹配0 个或多个*前的字符
^ 匹配行开头
$ 匹配行结尾
[] 匹配指定范围内中的任意一个字符
注意:

其中,pattern为所要匹配的字符串。

centos7上通过定义了grep的别名来高亮显示匹配到的字符串,centos6没有高亮显示

想要用好grep这个命令,其实就是要写好正则表达式,小编这里重点是要介绍查找命令的,所以这里不对grep的所有功能进行举例介绍,只简单举例几个。

例1:显示用户rpc默认的shell程序

Linux下的查找命令

* 这里-w用来匹配到指定单词

例2:使用egrep取出/etc/rc.d/init.d/functions中其基名

Linux下的查找命令

* 这里-o仅显示匹配到的字符串

例3:找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空白字符结尾的行

Linux下的查找命令

* 这里也用到了-w,匹配到LISTEN这个单词以及后面\+表示的多个空格

例4;显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)

Linux下的查找命令

* 这里-i忽略字母大小写,所以只以s开头的就可以查找到

第二种方法:cat /proc/meminfo|grep “^[Ss]”
* 这里的[]是用来匹配到[]里面的大s跟小s

二:Which
which 可执行文件名称
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同,但此处的包括了文件的路径。
-w 指定输出时栏位的宽度。 

作用:主要是用来查找系统PATH目录下的可执行文件。也就是说查找那些我们已经安装好的可以直接执行的命令。比如

Linux下的查找命令

* 这里 alias代表的是命令别名。由图可以看出which是可以分辨出命令的别名的,并且查出命令所在路径位置。

-v 显示版本信息,比如:

Linux下的查找命令

三:Whereis

语法: 
whereis [选项] 文件或者目录名称  
-b : 只找二进制文件 
-m: 只找在说明文件manual路径下的文件 
-s : 只找source源文件 
-u : 没有说明文档的文件

作用:用来查找二进制(命令)、源文件、man文件。它是通过文件索引数据库而非PATH来查找的,这点与which不同,所以查找的范围比which要广。比如:

Linux下的查找命令

* 我们由图可以看到whereis还找到了ls命令的相关man文件。其他的选项小编就不一一举例了,你们要多动手敲啊。

四:locate

Locate属于非实时查找,用法简单,在locate后面跟上所要查找的关键字即可,没什么难度,但依赖于数据库,也是通过数据库查找文件。它可以找到任意你指定要找的文件,同时locte还可以通过-r选项使用正则表达式,功能十分强大。

特点:查找速度快、模糊查找,比如:

Linux下的查找命令

* 小编这里只截取了前三行,是实际上locate输出的内容是非常多的。它查出了包含cp这两个字母的所有内容,说明它的模糊查找特点。

注意:locate使用的索引数据库里的信息并不一定是实时有效的,可以使用updatedb命令手动更新索引数据库。

五:find

find属于实时查找工具,通过遍历指定路径下的文件系统完成文件查找,

它要比前面四个命令复杂的多,功能也强大的多。这条命令是通过直接搜索硬盘的方式查找的,所以可以保证查找的信息绝对可靠。但它的搜索速度慢。

特点:查找速度慢、精确查找

5.1语法:

Find [选项]…[查找路径][查找条件][处理动作]

-name 基于名称的精确查找

-iname 基于名称忽略大小写的精确查找查找

例1:查找/root/bin下以数字.sh结尾的文件

Linux下的查找命令

-user 用户名  基于文件owner的查找

-group 组名 基于文件group的查找

例2:查找/var/目录属主为root且数组为mail的所有文件

Linux下的查找命令

-nouser 查找没有owner的文件

-nogroup 查找没有group的文件

5.2 -type 基于文件类型的查找

• f: 普通文件

• d: 目录文件

• l: 符号链接文件

• s:套接字文件

• b: 块设备文件

• c: 字符设备文件

• p: 管道文件

5.3 -size [+|-]#UNIT 根据文件大小来查找

常用单位:k, M, G,c(byte)

#UNIT: (#-1, #]如:6k 表示(5k,6k]

-#UNIT:[0,#-1]如:-6k 表示[0,5k]

+#UNIT:(#,∞)如:+6k 表示(6k,∞)

例3;查找/etc/目录下大于1M且类型为普通文件的所有文件

Linux下的查找命令

5.4根据时间戳查找:

以“天”为单位;

     -atime [+|-]#,

     #: [#,#+1)

     +#: [#+1,∞]

     -#: [0,#)

     -mtime

     -ctime

     以“分钟”为单位:

     -amin

     -mmin

     -cmin

例4:查找/etc/目录下最近两天内其内容修改过的属于root的文件

Linux下的查找命令

5.5根据权限查找

     -perm [+|-]mode

     mode:精确权限匹配

     +mode[/mode] 任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰

例5:查找/boot/下所有用户都没有写权限的文件

Linux下的查找命令

* 这个是小编在centos7下用+号执行的根据权限查找文件,看到warning没,警告最好用/表示,而且它查找出来的结果也不符合题意,有的user还有写权限呢。

Linux下的查找命令

* 由图可知,/表示的权限查找出来的文件才是正确的结果

     -mode  每一类对象都必须同时拥有指定权限

例6;查找/app/目录下至少有一类用户没有写权限

Linux下的查找命令

处理动作:

    -print 默认

    -delete 直接删除所查找到的文件,不询问。

    -ls 长列出所查找到的文件

    -ok command {} \; 对查找到的文件当做下一命令的参数去执行(交互式)

    -exec command {} \; 对查找到的文件当做下一命令的参数去执行(非交互式),比如:

Linux下的查找命令

* 小编这里使用-ok command {} \;来删除查找到的首字母为大写的文件,确定删除询问时输入y

    好了,小编本篇关于查找命令的分享到这里就结束了,还望大家踊跃评论,多多指教。


原创文章,作者:Qianzhihe,如若转载,请注明出处:http://www.178linux.com/84616

(0)
QianzhiheQianzhihe
上一篇 2017-08-13
下一篇 2017-08-13

相关推荐

  • 系统基础之vim工具详解

    vim工具详解 作为运维人员,每天要面对大量的文件操作,如何使用一个功能强大,操作快捷的文本编辑器,就至关重要.那天,今天给大家详细的介绍下vim这款编辑器,完全符合我们的要求,下面让我们一起来看看吧! 概论:  文本编辑器:  文本:纯文本信息,   ASCII text:  纯粹的,不加修饰的文字  文本…

    Linux干货 2016-08-10
  • 8-2 作业

    8-2作业     1.在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 2.创建组sales,gid 3000,passwd:centos,sales admins:user2。…

    Linux干货 2016-08-05
  • 不忘初心,砥砺前行!

    这是本人第一次书写博客,难免有些小心翼翼,手足无措,但每个人都有这样的经历,转念一想也就释怀了。时光飞速,我们已不再年轻,从大学毕业的那天起,我们就再也不是小孩子了。 7月的天气总是那么折磨人,高温让我们步履维艰,在7月只想找一片月淡风轻的乐土,度过一个难熬的夏天,或找一间空调房,调大音量,享受午后时光。但这样的日却离我们很远,这个夏天我们背起行囊,远离故土…

    2017-07-11
  • 马哥教育网络版22期+第10周作业

    week10 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;   (1) 为硬盘新建两个主分区;并为其安装grub;   (2) 为硬盘的第一个主分区提供内核和ramdisk文件;&nbsp…

    Linux干货 2016-10-29
  • 笔记–8.8 shell脚本编程

    shell编程注意事项  1,指令的执行是从上而下,从左而右的分析与执行  2,指令的下达时:指令,选项与参数之间的多个空白都会被忽略掉  3,空白行会被忽略掉,并且tab键所推开的空白同样视为空格键  4. 如果一行的内容太多,则可以使用『 \[Enter] 』来延伸至下一行  5,『 # 』可做为批注,任…

    Linux干货 2016-08-12
  • ​从实验来了解grub

    实验一为grub设置密码 先看一看grub是怎么样的 grub有两个版本 grub: GRand Unified Bootloader grub 0.x: grub legacy grub 1.x: grub2  Note:grub 1.x是完全重写的只不过是保留grub 0.x的工作机制。 2.利用grub自带命令生成密码grub-md5-cry…

    Linux干货 2016-06-09