在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

linux查找一个文件中abc字段命令,Linux查询命令整理(示例代码)相关推荐

  1. linux统计某个字符个数,Linux统计一个文件中特定字符个数的方法

    统计一个文件中某个字符串的个数,其实就是在在一块沙地里面找石头,有的人看到石头以后,在上面做个标记(grep),然后记住自己做了多少个标记:有的人看到石头以后,把它挖了(tr),最后统计自己挖了多少石 ...

  2. linux 检索全部文件中的中文词汇,linux – 获取所有文件中的单词计数

    我有一个目录树,其中包含一堆文件夹和子文件夹,以及这些子文件夹中的一堆文件.我需要在每个文件中得到'Hello'字样的计数,并将结果显示为'File'a'has'Hello'n times','Fil ...

  3. linux 文件转换ascii,linux 小技巧(查找替换文件中的ascii编码字符)

    这里纪录一些linux下用到的小技巧,以免遗忘 在linux中经常碰见各种文件处理.最常用的就是替换文件中的某些字符.常见字符替换还是很容易完成.但是有些不可见字符以及ascii编码字符等等都无法直接 ...

  4. linux怎么查找文件名带有abc的文件,如何查找一个文件夹里的最新的文件

    如何查找一个文件夹里的最新的文件以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何查找一个文件夹里的最新的文件 安装一 ...

  5. 如何查找一个文件linux,linux系统上如何快速的查找一个文件?

    以前看到过一句话:linux的水平体现在快速查找文件上~~~ ,或许这句话言过其实 但是因为linux上一切皆文件,任何我们想做的事情都可以通过编辑文件来完成, 如服务器的配置,维护,一切的一切我们都 ...

  6. zypper 删除mysql_如何在 Linux 上安装/卸载一个文件中列出的软件包?

    原标题:如何在 Linux 上安装/卸载一个文件中列出的软件包? 我们可以手动去安装这些软件但是这将花费大量的时间.你可以手动安装一俩个服务器,但是试想如果你有大概十个服务器呢.在这种情况下你无法手动 ...

  7. linux文件 第八行,求助:如何grep一个文件中含有关键词“OTU_”之后第八行的信息...

    本帖最后由 ottchen 于 2014-12-13 17:23 编辑 大家好!我刚解除Linux,花了一个下午的时间才明白Grep命令的强大,但是还有很多不懂.如下: Query= OTU_527 ...

  8. Linux下使用C语言查找一个文件夹下指定扩展名的所有文件

    最近在linux下要干点和c语言相关的任务,其中涉及使用C语言查找一个文件夹下指定扩展名的所有文件,我去开始在网上查找后粘贴后不能用,最后发现是windows下才能使用.最后找到了一篇不错的文章,ht ...

  9. linux shell 把一个文件的前n行 拷贝到另一个文件中

    几个G的超大文本文件,打开很慢,我们可以先截取前几行来进行查看,复制前n行到另一个文件中 在命令行直接输入:(将data.txt的前100000行复制到sample.txt中) head -n 100 ...

最新文章

  1. C#中两个窗体间的数据传递
  2. shell 替换字符串的几种方法,变量替换${},sed,awk
  3. 一篇图像识别的科普文
  4. cc java区别_cC和C++和java的问题有啥区别?
  5. Remository3.52简体中文语言包
  6. docker 启动容器的时候没-p 后面怎么加-p_基于Docker搭建基础自动化部署
  7. vc 编译的那些事儿 - wowolook的专栏 - CSDN博客
  8. 人工智能之语音识别概述(一)
  9. 魅族mx6 原生android,手机 篇一:魅族16s真实使用感受漫谈
  10. check the manual that corresponds to your MySQL server version for the right
  11. 【日语】日语商务情景口语
  12. Linux signal、sigaction的使用总结
  13. Windows向Linux自动传输文件,Windows向虚拟机Linux传输文件方法
  14. oracle教程目录(我要自学网)
  15. mtk keypad
  16. 11.30 - 每日一题 - 408
  17. 百度员工离职总结:如何做个好员工?
  18. 数据挖掘——第三章:数据预处理
  19. 拉手网的话题检测与跟踪
  20. python日常办公能用到_用Python自动办公,做职场高手全16讲(无需程序员基础) | 樱花庄...

热门文章

  1. python将图片裁剪成九宫格
  2. C语言printf() 详解之终极无惑
  3. 梅林固件路由器搭建私有云盘服务
  4. RGBA-ABGR-RGB666
  5. 卸载或者安装软件时提示没有足够的权限
  6. Derby的安装与使用
  7. Python-20:解析行政区域Python版
  8. 上半年我国工业机器人产量同比增长52.3%
  9. 14、Improved Day-Ahead Predictions of Load and Renewable Generation by Optimally Exploiting Multi-Sca
  10. 2023麦肯锡中国汽车消费者洞察:消费大潮引领智能电动汽车创新, 车企加速转型应对产业格局重塑...