热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux中使用find与grep进行文件和文本查找

在Linux系统中,find和grep是两个常用的命令,用于文件和文本的查找。本文将详细介绍这两个命令的区别及其常见用法。

Linux中使用find与grep进行文件和文本查找

在Linux系统中,文件和文本的查找是非常常见的操作。find和grep是两个非常强大的命令,分别用于根据文件属性和文件内容进行查找。

命令区别
  1. find命令主要用于根据文件的属性进行查找,如文件名、文件大小、所有者、所属组、是否为空、访问时间、修改时间等。
  2. grep命令则主要用于根据文件的内容进行查找,它会对文件的每一行按照给定的模式(pattern)进行匹配。

grep命令详解

grep全称是Global Regular Expression Print,表示全局正则表达式打印,其使用权限为所有用户。

grep -ir test ./ # 不区分大小写地递归搜索test
grep -i pattern files # 不区分大小写地搜索,默认情况下区分大小写
grep -l pattern files # 只列出匹配的文件名
grep -L pattern files # 列出不匹配的文件名
grep -w pattern files # 只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)
grep -C number pattern files # 匹配的上下文分别显示[number]行
grep pattern1 | pattern2 files # 显示匹配 pattern1 或 pattern2 的行
grep pattern1 files | grep pattern2 # 显示同时匹配 pattern1 和 pattern2 的行
grep -n pattern files # 显示匹配行的行号
grep -c pattern files # 统计匹配行的数量


正则表达式主要参数
符号含义
\忽略正则表达式中特殊字符的原有含义
^匹配正则表达式的开始行
$匹配正则表达式的结束行
<从匹配正则表达式的行开始
>到匹配正则表达式的行结束
[ ]单个字符,如[A]即A符合要求
[ - ]范围,如[A-Z],即A、B、C一直到Z都符合要求
.所有的单个字符
*有字符,长度可以为0

grep -irn phg ./ # 一般查询phg,忽略大小写,递归查询,显示匹配行和行号
grep -irn '^phg' ./ # 查询以phg开头的行
grep -irn 'Test$' ./ # 查询以Test结尾的行
# 不区分大小写i
# 递归查询r
# 显示匹配行及行号n


find命令详解

find path expression
find ./ -name 'test*'


按文件名查找

(1) find / -name httpd.conf  # 在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2) find /etc -name '*srm*'  # 使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(3) find . -name 'srm*'   # 表示当前目录下查找文件名开头是字符串‘srm’的文件


按文件特征查找

(1) find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)
(2) find / -atime -2   # 查找在系统中最后48小时访问的文件
(3) find / -empty   # 查找在系统中为空的文件或者文件夹
(4) find / -group cat   # 查找在系统中属于 group为cat的文件
(5) find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)
(6) find / -mtime -1   # 查找在系统中最后24小时里修改过的文件
(7) find / -user fred   # 查找在系统中属于fred这个用户的文件
(8) find / -size +10000c  # 查找出大于10000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9) find / -size -1000k   # 查找出小于1000KB的文件


使用混合查找方式

参数有: !, -and(-a), -or(-o)。
(1) find /tmp -size +10000c -and -mtime +2   # 在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2) find / -user fred -or -user george   # 在/目录下查找用户是fred或者george的文件
(3) find /tmp ! -user panda  # 在/tmp目录中查找所有不属于panda用户的文件


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文介绍如何从JSON格式的文件中提取数据并将其分配给Bash脚本中的变量。我们将探讨具体的命令和工具,帮助你高效地完成这一任务。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
author-avatar
此号我已不再用
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有