linux:查找相关命令find与grep

news/2025/1/16 2:02:34/

find

语法

在指定目录下查找文件和目录。

find [path] [expression]

path:是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
expression:是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。

expression 的选项有【注:这里列举比较常用的,并不是所有的】:

  • -name pattern:按文件名查找,支持使用通配符 * 和 ?。
  • -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
  • -size [±]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
  • -mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
  • -user username:按文件所有者查找。
  • -group groupname:按文件所属组查找。

举例

查找当前目录下名为 file.txt 的文件:

find . -name file.txt

将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

find . -name "*.c"

查找 /home 目录下大于 1MB 的文件:

find /home -size +1M

在这里插入图片描述

grep

语法

查找文件里符合条件的字符串或正则表达式

grep [options] pattern [files]

pattern - 表示要查找的字符串或正则表达式。
files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。

options 选项:
-i:忽略大小写进行匹配。
-v:反向查找,只打印不匹配的行。
-n:显示匹配行的行号。
-r:递归查找子目录中的文件。
-l:只打印匹配的文件名。
-c:只打印匹配的行数。

举例

1、在文件 index.js 中查找字符串 “xxx”,并打印匹配的行:

grep xxx index.js

在这里插入图片描述
2、在文件夹 dir 中递归查找所有文件中匹配正则表达式 “pattern” 的行,并打印匹配行所在的文件名和行号:

grep -n -r aaa .
grep -n -r aaa ./*.js

在这里插入图片描述
3、在标准输入中查找字符串 “world”,并只打印匹配的行数:

echo "hello world" | grep -c world

在这里插入图片描述

区别

从上面的截图可以看出:
grep搜索的是文本,find搜索的是文件。

一般可以结合使用,例如:
从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “ERROR” 的行:

find / -type f -name "*.log" | xargs grep "ERROR"

http://www.ppmy.cn/news/66699.html

相关文章

Java 中String对象详解

Java语言中的String对象是一个非常常见的数据类型,大多数情况下我们都是在使用String对象来表示字符串类型的数据。Java中的String类是一个final class,它是不可被继承的。本文将对Java中的String对象进行详细全面的描述,包括以下几个方面&am…

Dijkstra算法图解,C++实现Dijkstra算法

目录 Dijkstra算法简介数据结构抽象初始化开始计算第一轮计算第二轮计算第三轮计算第四轮计算算法总结 C实现Dijkstra算法 Dijkstra算法简介 Dijkstra算法计算是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起…

【算法】Smallest Integer Divisible by K 可被 K 整除的最小整数

文章目录 Smallest Integer Divisible by K 可被 K 整除的最小整数问题描述:分析代码 Tag Smallest Integer Divisible by K 可被 K 整除的最小整数 问题描述: 问题 给定正整数 k ,你需要找出可以被 k 整除的、仅包含数字 1 的【最小正整数…

k8s巡检脚本

#!/bin/bash #检查kubectl是否已经安装 if ! command -v kubectl &> /dev/null then echo -n "kubectl 未安装,请先安装kubectl"exitfi echo -e “开始集群状态信息收集/” #检查集群状态: echo -n “检查集群正常状态:” kubectl cluster…

Apache FtpServer在Windows上使用以及SpringBoot中集成apache ftpserver实现Ftp 服务端搭建

场景 Apache Ftpserver Apache FtpServer是100%纯Java FTP服务器。它被设计为基于当前可用的开放协议的完整且 可移植的FTP服务器引擎解决方案。FtpServer可以作为Windows服务或Unix / Linux守护程序独立运行, 也可以嵌入Java应用程序中。我们还提供…

springboot+vue高校社团管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的高校社团管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

Threejs进阶之十三:CSS3DRenderer与Tween.js实现粒子小球按规律变化

今天我们使用CSS3DRendererTween.js实现Threejs官方示例中的粒子小球按规律变化的效果,先看下最终实现的效果 先来分析下,这个页面的动画效果是由512个小球组合起来的四种不同变化,分别是曲面、立方体、随机和圆球四种变化;下面我…

SQL Server表的类型

目录 一、SQL Server的临时表 二、SQL Server的系统表 一、SQL Server的临时表 SQL Server中的数据表分为: 永久表:创建后一直存储在数据库文件中,直到用户删除为止。临时表: 局部临时表:表名用#开头。只能由创建它…