一个很简单的方式就是使用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. uni-app打包到安卓步骤

    1.打包到安卓 https://www.bilibili.com/video/BV1BJ411W7pX?p=56 2.打包到IOS https://www.jianshu.com/p/ef6e6e01 ...

  2. keepalived如何手动切换主备

    概述 主备部署中使用keepalived可以很方便的实现,安装维护简单,功能稳定. 最近在使用过程中有小的发现,记录一下. 环境 CentOS Linux release 7.9.2009 (Core ...

  3. sql语句内变量的使用

    0.原始表格如下: 1.定义变量,并在sql语句内查询: set @user_name = "成龙";SELECT * FROM `tb_user` where userName ...

  4. java基础-流程控制-day04

    目录 1. if单分支 2. if else 多分支 3. if else双分支 4. 随机生成一定区间的整数 5 switch语句 6. while循环 7. for循环 8. break cont ...

  5. 给Hexo博客文章加密

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 原文地址 这是个啥 首先, 这是 Hexo 生态圈中 最好的 ...

  6. [转帖]从小白到精通:揭秘perf工具的全部功能与操作技巧

    https://zhuanlan.zhihu.com/p/664396453 ​ 目录 收起 一.引言 二.理解perf工具的基本概念 三.安装与配置perf工具 3.1.不同操作系统的perf工具安 ...

  7. [转帖]tidb-系统内核调优及对比

    一.背景 验证系统调优对性能的影响,用sysbench做了一些简单的测试,具体调整方法可见官方文档 二.特殊说明 1.透明大页查看 # 查看透明大页是否开启,[]在always处表示开启,[]在nev ...

  8. TiKV占用内存超过的解决过程

    TiKV占用内存超过的解决过程 背景 为了后去TiDB的极限数据. 晚上在每台服务器上面增加了多个TiKV的节点. 主要方式为: 每个NVME的硬盘增加两个TiKV的进程. 这样每个服务器两个磁盘, ...

  9. [转帖]为什么不推荐使用/etc/fstab

    https://www.jianshu.com/p/af49a5d0553f 对于工作中使用服务器的公司来讲,每到节假日来临时,总免不了对服务器进行下电.而收假回来的早上,则会有一个早上的时间会花费在 ...

  10. [转帖]Influxdb 2.x 快速入门

    Influxdb 2.x 快速入门 https://www.jianshu.com/p/268fca65f10e Influxdb是由Golang 构建的时序数据库,由于由Go语言构建使得其跨平台部署 ...