Linux中如何查找特定的数据是否在目录或文件中
一个很简单的方式就是使用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中如何查找特定的数据是否在目录或文件中的更多相关文章
- Linux中权限(r、w、x)对于目录与文件的意义
Linux中权限(r.w.x)对于目录与文件的意义 一.权限对于目录的意义 1.首先要明白的是目录主要的内容是记录文件名列表和子目录列表,而不是实际存放数据的地方. 2.r权限:拥有此权限表示可以读取 ...
- mysql中把一个表的数据批量导入另一个表中
mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...
- 将Json数据保存在静态脚本文件中读取
一些常用的数据例如一些网站的区域信息被改变的可能性不大,一般不通过请求获取,于是我们选择存在静态文件中,例如以下Demo: 1.动态加载Json数据显示到前台 [HttpPost] public Ac ...
- [数据科学] 从csv, xls文件中提取数据
在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据. 点击下载数据文件http://seanlahman.com/files/databas ...
- sql 从一个库中取某个表的数据导入到另一个库中相同结构的表中
sql 2008 从一个库中把 某个表中的数据导入到另一个库中的具有相同结构的表中 use 库1 go insert into 库1.dbo.表1 select * from 库2.dbo.表1 ...
- c代码写数据到二进制的bin文件中
需要将数据写入到bin文件中,打开该文件是一堆乱码,增加数据的保密性 例如:要写入的数据为一个字符串,加上若干个int型整数 #define _CRT_SECURE_NO_WARNINGS #incl ...
- python 将json格式的数据写入csv格式的文件中
# coding=utf-8 import json import csv # 重新进行配置读写数据时的默认编码 import sys reload(sys) sys.setdefaultencodi ...
- 【VS开发】使用WinPcap编程(4)——把网络数据包存储到一个文件中
这里用到的数据结构是pcap_dumper_t,这也是一个相当于文件描述符的东西,我们在用的时候先指定pcap_dumper_t *dumpfp; 使用两个函数来存储网络数据,一个是pcap_dump ...
- Python用xlrd读取Excel数据到list中再用xlwt把数据写入到新的Excel中
一.先用xlrd读取Excel数据到list列表中(存入列表中的数据如下图所示) import xlrd as xd #导入需要的包 import xlwt data =xd.open_workboo ...
- MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如 何保证 redis 中的数据都是热点数据?
Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略. 相关知识:Redis 提供 6 种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i]. ...
随机推荐
- 基于 SpringBoot + magic-api + Vue3 + Element Plus + amis3.0 快速开发管理系统
Tansci-Boot 基于 SpringBoot2 + magic-api + Vue3 + Element Plus + amis3.0 快速开发管理系统 Tansci-Boot 是一个前后端分离 ...
- 杂谈 | 在 SEU 开会可以去哪里
空间预约: 健雄书院预约系统 只对吴院人开放,其他人可通过前台志愿者预约. 秉文书院对全校开放(貌似?),需要 提前一天 预约. 借教室需要 提前两天 申请. 图书馆研讨间可以随时约,只是有点难抢. ...
- Redis 缓存常见问题
本文为博主原创,未经允许不得转载: 目录: 1. 缓存穿透 1.1 出现原因 1.2 解决方案 1.3 布隆过滤器 2. 缓存雪崩 3. 缓存失效(缓存击穿,热点缓存) 1. 缓存穿透: 缓存穿透是指 ...
- C# WPF侧边栏导航菜单(Dropdown Menu)
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- text, data and bss: Code and Data Size Explained
[来源]
- MyBatis06——动态SQL
动态SQL if choose (when, otherwise) trim (where, set) foreach 搭建环境 1.搭建数据库 CREATE TABLE `blog` ( `id` ...
- [转帖]“炫技” 还是 “真硬核”,OpenPPL 实测阿里「倚天 710」芯片
https://my.oschina.net/openppl/blog/5524424 本文将以深度学习模型推理应用为出发点,对「倚天 710」这款 ARM Server 芯片进行性能方面的实测. ...
- [转帖]Linux:页表中PGD、PUD、PMD、TLB等概念介绍
1.PGD: Page Global Directory Linux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的.当创建一个新的进程时,都要为新进程 ...
- [转帖]【JVM】GC算法与垃圾收集器
引入 java 语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理.由于有个垃圾回收机制,可以有效的防止 ...
- [转帖]Linux内核网络中的软中断ksoftirqd
https://zhuanlan.zhihu.com/p/361976930 1. 前言 之前分享过Linux内核网络数据包的接收过程,当执行到网卡通过硬件中断(IRQ)通知CPU,告诉它有数据来了, ...