热门标签 | 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用户的文件


推荐阅读
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在网络故障排查中,tcpdump 是一款强大的工具,尤其在 Linux 环境下。尽管开发环境中问题较少,但在测试或生产环境中,往往会遇到各种难以预料的异常情况。通过在问题发生的环境中启用 tcpdump 进行抓包,并重现问题,可以获取到宝贵的原始数据,为问题的诊断提供关键线索。本文将详细介绍如何使用 tcpdump 进行实战操作,帮助读者掌握这一技能。 ... [详细]
  • 本文介绍了如何查看PHP网站及其源码的方法,包括环境搭建、本地测试、源码查看和在线查找等步骤。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 如何利用正则表达式(regexp)实现高效的模式匹配?本文探讨了正则表达式在编程中的应用,并分析了一个示例程序中存在的问题。通过具体的代码示例,指出该程序在定义和使用正则表达式时的不当之处,旨在帮助读者更好地理解和应用正则表达式技术。 ... [详细]
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社区 版权所有