一个很简单的方式就是使用grep命令,grep命令是一个强大有效可靠并且很流行的命令行工具,用于查找对应的数据包含文件或者目录中在Linux环境中。

为了便于学习,我们准备了以下文件,具体想要查找以实际为准。

[root@localhost sharplee]# ls -l
total 40
-rw-r--r--. 1 root root 15606 Feb 26 10:12 jetty.sh
-rw-r--r--. 1 root root 0 Mar 2 09:06 myfile1
-rw-r--r--. 1 root root 0 Dec 10 2022 myfile2
-rw-r--r--. 1 root root 0 Dec 10 2022 myfile3
-rw-r--r--. 1 root root 0 Mar 2 09:35 myfile4
-rw-r--r--. 1 root root 0 Dec 10 2022 myfile6
-rw-r--r--. 1 root root 8 Mar 3 08:21 test
-rw-r--r--. 1 root root 28 Mar 6 08:52 test1.sh
-rw-r--r--. 1 root root 29 Mar 6 08:53 test2.sh
-rw-r--r--. 1 root root 11 Mar 6 08:53 test3.sh
-rw-r--r--. 1 root root 10 Mar 2 08:48 test.sh
-rw-r--r--. 1 root root 241 Mar 3 08:16 wcfile

查找包含cd单词的文件

通过执行以下命令来查看Linux系统/home/sharplee/目录下的文件中包含cd单词的文件。

[root@localhost sharplee]# grep -Rwi /home/sharplee -e "cd"
/home/sharplee/jetty.sh:cd "$JETTY_HOME"
cd "$JETTY_BASE"
/home/sharplee/jetty.sh: cd \"$JETTY_BASE\"
/home/sharplee/test1.sh:cd /home/
/home/sharplee/test1.sh:cd sharplee
/home/sharplee/test1.sh:cd ..
/home/sharplee/test2.sh:cd ..
/home/sharplee/test2.sh:cd /home/sharplee
/home/sharplee/test2.sh:cd ~

上面的命令参数的含义是 -R是用于递归子目录,可以查询当前目录下的所有子目录包含特定查找数据的目录,-i的含义是不区分大小写,-w(word)的含义是查找对应的单词。单词是什么,单词就是有特殊符号分割的对应的字符串。

下面来看一下通过单词查不到数据的例子。

-Rwi  -e "你好"

我们可以看出通过该命令啥也查不出来,但是这个目录下的文件中却有文件包含你好,下面打印的就是该文件中包含你好

[root@localhost sharplee]# cat wcfile
你好呀~欢迎观看Linux教程
下面来看一下wc使用
wc 命令1
wc 命令2
wc command
wc cc
wc xxxxxxxxxxxxxxxxxxxxxxxxxxx
mm cccccccccccccccccccxx
啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
llllllllllllllllllllllllll

通过上面查询可以看出,确实包含有你好,为啥会查不到呢?其实刚才上面那个命令已经做了很好的解释,grep 后面加了-w是用于查找对应的单词的。单词是啥就是上面说的,用特殊符号分割的。下面来看一下如何查到这个单词。

[root@localhost sharplee]# grep -Rwi /home/sharplee -e "你好呀"
/home/sharplee/wcfile:你好呀~欢迎观看Linux教程
[root@localhost sharplee]#

通过上面可以看出,grep 加了-w命令只能查到对应单词的数据。那么如何查看包含该数据并且不是单词的呢。

查找包含"你好"对应的文件

通过上面可以看出查找你好,加了-w是不能准确匹配到包含你好的文件,而是定位的是包含你好单词的文件,接下来看一下如何查找对应的数据包含的文件,其实很简单,就是把-w去掉,毕竟-w是用于查单词的。

[root@localhost sharplee]# grep -Ri /home/sharplee -e "你好"
/home/sharplee/wcfile:你好呀~欢迎观看Linux教程
[root@localhost sharplee]#

可以看出去掉-w之后,就可以查找包含相应关键的文件了。

查找包含"你好"对应的文件的行数

上面可以看到查询到了对应的字符串包含的文件和目录,但是不知道这个对应的字符串是在文件的哪个位置,为了很好的定位查到的数据,这个时候可以打印出文件对应数据的行数位置。

[root@localhost sharplee]# grep -Rin /home/sharplee -e "你好"
/home/sharplee/wcfile:1:你好呀~欢迎观看Linux教程
[root@localhost sharplee]#

从上面执行的命令可以很快定位到查找的数据在对应的文件的第一行,就是绿色标准的地方,其实就是在命令行后面加了一个-n选项。

查找包含"cd"对应的特定后缀名的文件

可以看出上面命令都是查找对应目录下的所有的文件,那么可不可以只查某些后缀名的文件呢,答案是肯定的,可以通过增加参数来控制只查找对应目录下特定后缀的文件。

[root@localhost sharplee]# grep -Rin --include="*.sh" /home/sharplee -e "cd"
/home/sharplee/jetty.sh:250:cd
/home/sharplee/jetty.sh:261:cd
/home/sharplee/jetty.sh:487cd
/home/sharplee/test1.sh:1:cd /home/
/home/sharplee/test1.sh:2:cd sharplee
/home/sharplee/test1.sh:3:cd ..
/home/sharplee/test2.sh:1:cd ..
/home/sharplee/test2.sh:2:cd /home/sharplee
/home/sharplee/test2.sh:3:cd ~

Linux中如何查找特定的数据是否在目录或文件中的更多相关文章

  1. Linux中权限(r、w、x)对于目录与文件的意义

    Linux中权限(r.w.x)对于目录与文件的意义 一.权限对于目录的意义 1.首先要明白的是目录主要的内容是记录文件名列表和子目录列表,而不是实际存放数据的地方. 2.r权限:拥有此权限表示可以读取 ...

  2. mysql中把一个表的数据批量导入另一个表中

    mysql中把一个表的数据批量导入另一个表中   不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...

  3. 将Json数据保存在静态脚本文件中读取

    一些常用的数据例如一些网站的区域信息被改变的可能性不大,一般不通过请求获取,于是我们选择存在静态文件中,例如以下Demo: 1.动态加载Json数据显示到前台 [HttpPost] public Ac ...

  4. [数据科学] 从csv, xls文件中提取数据

    在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据. 点击下载数据文件http://seanlahman.com/files/databas ...

  5. sql 从一个库中取某个表的数据导入到另一个库中相同结构的表中

    sql 2008 从一个库中把 某个表中的数据导入到另一个库中的具有相同结构的表中 use 库1 go insert into  库1.dbo.表1  select * from  库2.dbo.表1 ...

  6. c代码写数据到二进制的bin文件中

    需要将数据写入到bin文件中,打开该文件是一堆乱码,增加数据的保密性 例如:要写入的数据为一个字符串,加上若干个int型整数 #define _CRT_SECURE_NO_WARNINGS #incl ...

  7. python 将json格式的数据写入csv格式的文件中

    # coding=utf-8 import json import csv # 重新进行配置读写数据时的默认编码 import sys reload(sys) sys.setdefaultencodi ...

  8. 【VS开发】使用WinPcap编程(4)——把网络数据包存储到一个文件中

    这里用到的数据结构是pcap_dumper_t,这也是一个相当于文件描述符的东西,我们在用的时候先指定pcap_dumper_t *dumpfp; 使用两个函数来存储网络数据,一个是pcap_dump ...

  9. Python用xlrd读取Excel数据到list中再用xlwt把数据写入到新的Excel中

    一.先用xlrd读取Excel数据到list列表中(存入列表中的数据如下图所示) import xlrd as xd #导入需要的包 import xlwt data =xd.open_workboo ...

  10. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如 何保证 redis 中的数据都是热点数据?

    Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略. 相关知识:Redis 提供 6 种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i]. ...

随机推荐

  1. Vue2知识点简要

    一.双向绑定原理 Vue2采用的是观察者-发布订阅模式,利用Object.defineProperty实现对数据已定义属性的监控(定义观察者模式), 编译DOM时解析v-model等属性以及对inpu ...

  2. spring--是如何解决单例模式下循环依赖问题的

    Spring 解决单例 bean 的循环依赖主要依赖于容器的三级缓存机制,以及 bean 的提前暴露.这里是它如何工作的: 三级缓存: 一级缓存(singletonObjects):存储已经经过完整生 ...

  3. 【TouchGFX】MIXINS - ClickListener

    ClickListener Click Listener混合器使它可以应用到其小部件,并能够通过使用回调扩展小部件来响应触摸输入. 在TouchGFX Designer中,可以通过在" Mi ...

  4. Laravel - 配置 数据库

  5. [转帖]美国出口管制第六番 ECCN编码的藏宝图之旅

    https://zhuanlan.zhihu.com/p/585040344 哈喽大家好,这里是大话合规 一旦明确物项受EAR管制(大前提) 下一步就是对物项进行编码 @#¥%&* 这篇文章蜗 ...

  6. [转帖]字符集 AL32UTF8 和 UTF8

    https://blog.51cto.com/comtv/383254# 文章标签职场休闲字符集 AL32UTF8 和 UTF8文章分类数据库阅读数1992 The difference betwee ...

  7. [转帖]k8s(1.28.2)部署ingress-nginx-controller(1.9.0)

    1.部署ingress-nginx-controller 继在三台虚拟机部署k8s后,需要部署ingress-nginx-controller,才能使设置的ingress规则生效. 1.1下载yaml ...

  8. [转帖]oracle rac后台进程和LMS说明

    本文摘抄录oracle官方文档,oracle rac使用的后台进程,用以备忘,记录之. About Oracle RAC Background Processes The GCS and GES pr ...

  9. [转帖]Jmeter学习笔记(十九)——后置处理器之正则表达式的使用

    https://www.cnblogs.com/pachongshangdexuebi/p/11733005.html 一.正则表达式提取器的作用 允许用户从服务器的响应中通过使用perl的正则表达式 ...

  10. Kafka学习之四_Grafana监控相关的学习

    Kafka学习之四_Grafana监控相关的学习 背景 想一并学习一下kafaka的监控. 又重新开始学习grafana了: 下载地址: https://grafana.com/grafana/dow ...