一个很简单的方式就是使用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:487: cd
/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. flexible+rem移动端适配

  2. 第1篇 numpy 语法

    import numpy as np A = np.array([ [1, 2, 3, 4], [5, 6, 7, 8], ], dtype=int) # dtype指定数据类型int float p ...

  3. idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql

    本文为博主原创,未经允许不得转载: mybatis plus 使用过程中已经很大程度提升了我们开发的效率,因为它内部已经对单表的操作进行了完美的封装,但是关联表操作时, 这时就需要自己定义sql,自定 ...

  4. ASIC 功能验证SVTB

    System Verilog进行验证是可以不综合的 发现DUT中的功能问题 预备知识:Linux/verilog/gvim System Verilog学习目录 System Verilog Test ...

  5. 永久激活Windows10专业版及其它版本【亲测有效2022-03-16,两种方式】

    前言 小编最近使用公司的电脑,开始出现让你激活的提示,而且每次开机都会弹出来,小编忍住了:但是过不了半个月开始给你在桌面上显示了,一直显示和水印一样.小编忍无可忍,必须找个办法给你消灭掉!!,于是小编 ...

  6. Spring Boot对接Oracle数据库

    Spring Boot对接Oracle数据库 最近学习了Oracle数据库,那么如何使用Spring Boot和MyBatis Plus对接Oracle数据库呢? 这就有了这篇随记,具体流程如下 1. ...

  7. JDK21更新特性详解

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 文章更新计划 | 430: | String T ...

  8. [转帖]mysql 里 CST 时区的坑

    mysql 里 CST 时区的坑 一.问题简述 mysql 里 CST 时区是个非常坑的概念,因为在 mysql 里CST既表示中国也表示美国的时区.但是在Jdk代码里,CST 这个字符串被理解为Ce ...

  9. [转帖]十分钟掌握 Vim 编辑器核心功能

    https://juejin.cn/post/6929248764746006535 前言 相信不论是前端还是后台多多少少都需要上到服务器上做一些操作,改改配置文件等,大多数 Linux 服务器默认都 ...

  10. [转帖]hex,base64,urlencode编码方案对比

    https://www.jianshu.com/p/4d701c09d44e 原创:打码日记,欢迎分享,转载请保留出处. 简介 在工作过程中,我们慢慢会了解到hex.base64.urlencode这 ...