Linux查询命令整理

在linux中,查找命令主要有find和grep,以及mlocate/locate

区别:
 (1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
 (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
 (3)mlocate(locate) 命令用来查找文件或目录,速度快。

一、find命令

find 是文件层次的查找(包括子目录,就是对当前路径树查找)   
基本格式:find  path  name

1、按照文件名查找    

(1)find  /opt  -name  abc.txt   #在/opt目录下查找文件abc.txt   
(2)find  /opt  -name abc.txt  #在/opt目录下文件abc.txt    
(3)find  /opt  -name  ‘*abc*‘   #使用通配符*。表示在/opt目录下查找文件名中含有字符串‘abc’的文件
(4)find  /  -name  ‘abc*‘   #表示当前目录下查找文件名开头是字符串‘abc’的文件

2、可指定文件类型查找

find / -name "abc*" -type  d   # 查找类型为目录类型
     find / -name "abc*" -type  f   # 查找类型为文件类型
-type t
             True if the file is of the specified type.  Possible file types
             are as follows:
             b       block special
             c       character special
             d       directory     
             f       regular file  
             l       symbolic link
             p       FIFO
             s       socket

3、控制目录查找深度

  -maxdepth number
     find / -name "abc*" -maxdepth  2  # 查找到二级目录

4、按照文件特征查找

时间:
(1)find / -amin -10    # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -1     # 查找在系统中最后24小时访问的文件
(3)find / -mmin -10   # 查找在系统中最后10分钟里修改过的文件(modify time)

(4)find / -mtime -2   #查找在系统中最后48小时里修改过的文件
 补充:history 10 #表示查看系统最后使用的10条命令
大小:
(1)find / -size +100M  #查找出大于100M字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(2)find / -size -100M   #查找出小于100M的文件

其他:
(1)find / -empty        # 查找为空的文件/夹     
(2)find / -user ljw      #查找属于用户是ljw的文件/夹
(3)find / -group ljw   # 查找group(组)为ljw的文件/夹

5.使用混合查找方式查找文件

参数有: !,-and(-a),-or(-o)  

(1) find  /opt  -size  +100M  -and  -mtime  +10   #在/opt目录下查找大于100M并在最后10分钟内修改的文件
(2) find  /  -user  ljw  -or  -user  ljw1   #在/目录下查找多个用户是ljw或者ljw1的文件文件
(3) find  /opt  !  -user  ljw  #在/opt目录中查找所有不属于用户ljw的文件

二、grep 命令

基本格式:grep 字符串 路径

1、主要参数

[options]主要参数: 
-c:只输出匹配行的计数。 
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。

2、grep -r "字符串"

(1)grep ‘test‘ d*  #显示所有以d开头的文件中包含 test的行
(2)grep ‘test’ aa bb cc    #显示在aa,bb,cc文件中包含test的行
(3)grep ‘[a-z]\{5\}’ aa   #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
(4)grep magic /usr/src  #显示/usr/src目录下的文件(不含子目录)包含magic的行
(5)grep -r magic /usr/src  #显示/usr/src目录下的文件(包含子目录)包含magic的行

(6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

3、grep 可以结合其他命令使用,效果也很好

例如利用通道‘|’查找文件
 grep -Rl  ‘name‘  /opt     # 查找文件内容。其中查找的字符串,可不写引号‘‘。
递归查找文件,在路径/opt下(包括子目录),找出文件内容中含有字符串‘找我‘的文件。显示为路径和文件名。
1. find | grep name

# 查找目录
查找出当前目录和子目录的文件名中含有name的文件

即find查找出当前目录和子目录下的文件名,利用管道 | 交给grep过滤出含有name的那几行,间接查找出文件。
其中find和grep可字行添加所需参数

2. find | xargs grep name    # 查找文件内容
查找出当前目录和子目录的文件内容中含有name的行
与 xargs 结合,可以传递各种选项来调整你的输出,并删除找到的那些文件。

3. ll | grep luoluo   # 查找文件
类似find | grep luoluo,只是不能递归查找子目录下的文件名

4.rpm -qa | grep  ‘软件名‘    #查找安装的软件

三、mlocate/locate 文件查找

对于文件数量庞大的时候,可以使用此方法查找
mlocate和locate 命令一样,下面就不再写locate了。至于mlocate和locate的关系,最后面会具体说一下。
locate命令其实是“find -name”的另一种写法,但是要比后者快得多。
Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

1、使用命令

mlocate  abc.txt   #直接搜索文件
mlocate ~/m    # 搜索用户主目录下,所有以m开头的文件。
mlocate  /etc/abc    # 搜索etc目录下所有以abc开头的文件。
mlocate  -ie  abc.txt       #如果 abc.txt已经删除了,使用-e会检查文件是否真实存在,而不必updatedb,-i,忽略大小写。

mlocate  /etc/*abc     #在/etc中查找含有字符串abc的文件。

2、准备工作

先安装mlocate/locate工具命令,创建数据库(创建索引),然后更新数据库。
安装工具命令:
yum  install mlocate
yum  install updatedb
updatedb    #updatedb更新数据库,即文件库。

3、整个locate/mlocate工作其实是由四部分组成的:

/usr/bin/updatedb   #主要用来更新数据库,可通过crontab自动完成的
/usr/bin/locate         #查询文件位置的程序(查询时是改程序运行,进行查找),也可能是mlocate。
/etc/updatedb.conf   #updatedb的配置文件,用来配置数据库中要放入或排除哪些目录和文件等
/var/lib/mlocate/mlocate.db  #存放文件信息的文件,文件名和对于的目录。

4、mlocate默认不搜索的文件:

即写入updatedb的配置文件/etc/updatedb.conf的文件。
PRUNE_BIND_MOUNTS="yes"

PRUNEFS="ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf"
PRUNENAMES=".git .bzr .hg .svn"

PRUNEPATHS="/afs /tmp /var/spool /media"

解释:
第一行 "yes":是否进行限制搜索。
第二行 排除检索的文件系统类型。
第三行 排除检索的后缀文件。
第四行 排除检索的路径,且对路径下的子文件夹也不检索。

5、关于mlocate和locate:

mlocate有一个近亲:slocate,它安全地( s 代表安全)记录了相关的文件权限,以防止非特权用户看到特权文件。此外,还有它们所起源的一个更老的,原始 locate 命令。
mlocate与locate和slocate的不同之处在于,在每次扫描文件系统,更新数据库时,mlocate 不需要持续重新扫描所有的文件系统。mlocate 在数据库中保存了时间戳信息,无需重新读取,就能判断目录内容是否改变。所以更新的速度更快,对硬盘的占用也更少。
这是mlocate特有的功能。相反,它将其发现的文件(m代表合并)与现有的文件列表合并在一起,使其可以借助系统缓存从而性能更高、更轻量级。由于mlocate流行,所以也简称其为 locate。

mlocate和locate命令的一个关键组件,名为 updatedb,更新数据库的命令。
updatedb 通过cron任务定期运行,通常在一天中的安静时间运行。
在文件 /etc/cron.daily/mlocate.cron 的内部(该文件的路径及其内容可能因发行版而不同)。每天如何触发 “updatedb” 命令。

关于配置文件的内容可以参考该文章:https://linux.cn/article-9053-1-rel.html

原文地址:https://www.cnblogs.com/cucuad/p/10105207.html

时间: 2024-11-10 11:25:45

Linux查询命令整理的相关文章

Linux Centos6.x 下常用查询命令整理

Linux Centos6.x 下常用查询命令整理 ---- 1.系统基本信息 ---- 查看 系统版本 cat /etc/redhat-release [[email protected] ~]# cat /etc/redhat-release CentOS release 6.9 (Final) 查看 处理器架构 arch 或 uname -m [[email protected] ~]# arch x86_64 [[email protected] ~]# uname -m x86_64

linux常用命令整理(四):软件包管理和shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

linux常用命令整理(五):shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

Linux常见命令整理(二)

权限设置 chmod  改变文件或目录的权限 格式 chmod 参数  文件名 r-读 w-写 x-执行 u-user 所有者 g-group 所属组 o-others 其他人 a-all 所有人 + 添加某个权限 - 取消某个权限 =  赋予给定权限并取消原来所有权限 除此之外,也可以使用数字来表示权限 r = 4 w = 2 x = 1 例如:chmod 777 a 代表修改文件a的权限是-rwxrwxrwx 其他的权限类似 chown 改变某个文件或目录的所有者 格式 chown 用户 文

Linux 娱乐命令 整理

Linux 娱乐命令 整理 成天面对白底黑字的程序员, Linux都能搞出一些类似冷笑话的娱乐命令= =#, 为保持博客持续更新, 今天懒惰点发些好玩的吧 1. sl (奔跑的小火车) 目的好像是 ls 敲错后的彩蛋 [[email protected] ~]# yum install sl [[email protected] ~]# sl 效果图如下 2. cowsay 文字图+文字 (不太会对这命令描述了= =) // 安装 yum install // 查看能够使用的类型 cowsay

Linux常用命令整理(部分)

Linux常用命令(部分) 准备首先安装vmware虚拟机,安装centos镜像文件 1:linux的目录结构(部分) /bin 常用的系统命令目录 /boot 启动命令目录 /etc 配置文件目录 /home 存放除root用户外的其它用户目录 /lib  存放jar包目录 /mnt 挂载目录-挂载其它硬件 /root root用户的家目录 /tmp 存放临时数据目录 /usr 通用的软件安装目录 2:常用的指令(部分) 查看文件夹 ll 查看全部文件夹 ll -a 查看文件内容 cat wo

Linux常用命令整理

文件.目录类 文件查看.处理 cat file                                                  # 显示文件的内容 cat -n file                                              # 显示文件的行数编号 cat file1 file2 > file3                              # 将文件 file1 和 file2 的内容合并之后放入 新文件 file3 中 hea

Linux实用命令整理

0. 基本命令 linux 基本命令整理 1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a 2. vim小结 2.1 vim替换 :m,ns/word_1/word_2/gc #把word_1用word_2替换,g表示替换所有的, c表示替换每一个时需要确认 2.2 vim统计某一个字符串的个数 :m,ns/word_1/&/gn #把word_1用word_2替换,g表示替换所有的, n

一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)

面试涉及问题含有: Java JDK8新特性 集合(哈希冲突.HashMap的原理.自动排序的集合TreeSet) 多线程安全问题 String和StringBuffer JVM 原理.运行流程.内部结构 Linux 查询含有某字符串内容的命令grep 查询进程.GC状态.杀死进程 Hadoop五种节点介绍 -----------------------------------------------------------------------------------------------