linux grep和find 的强大功能

本文介绍Linux系统中强大的文件查找工具grep和find的详细用法,包括grep的常用参数如忽略大小写、输出行号等,以及find命令按时间、权限、文件类型等条件查找的方法。

grep和find在linux中查找是很强大的,把grep及find的用法及参数列表做个备份以备以后查找:

1.grep 命令,grep命令有个常用的参数使用方法如下
grep -[acinv]

-a 以文本文件方式搜索 
-c 计算找到的符合行的次数 
-i 忽略大小写 
-n 顺便输出行号 

-R 读取每个文件夹下的所有文档,相当于-d参数
-v 反向选择,即找 没有搜索字符串的行 


#grep -in 'disable'  /etc/xinetd.d/*

该命令将列出/etc/xinetd.d目录下所有包含disable的文件并输出行号

#grep -nR 'disable' /etc/*    == #grep 'disable' -nR /etc/*

该命令将列出/etc目录下及子目录的所有包含disable的文件并输出行号

 2. find 命令

 -amin n:在过去 n 分钟内被读取过
 -anewer file:比档案 file 更晚被读取过的档案
 -atime n:在过去 n 天过读取过的档案
 -cmin n:在过去 n 分钟内被修改过
 -cnewer file :比档案 file 更新的档案
 -ctime n:在过去 n 天过修改过的档案
 -empty:空的档案-gid n or -group name:gid 是 n 或是 group 名称是 name

  -gid n 查找属于ID号为n的用户组的所有文件

  -group 字串,查找属于用户组名为所有字串的所有文件
 -ipath p, -path p:路径名称符合 p 的档案,ipath 会忽略大小写
 -mount, -xdev:只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案

  -lname 字串查找文件名匹配的所有符号链接文件,字串内可以使用通配符* ? []

 -name name, -iname name:档案名称符合 name 的档案。iname 会忽略大小写
 -path 字串 查找路径名匹配所有字串的所有文件,字串内可用通配符* ? []

  -size n:档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二

个位元组。-type c:档案类型是 c 的档案。

  -uid n 查找属于ID号为n的用户组的所有文件

  -user 字串 查找属于用户名为所有字串的所有文件



### Linux 中 `find` `grep` 命令的用法及区别 #### 一、`find` 命令的功能与用法 `find` 是一个用于在文件系统中递归查找文件目录的命令。它可以根据多种条件(如名称、类型、大小、修改时间等)来定位目标文件或目录[^4]。 - **基本语法**: ```bash find [路径] [选项] [表达式] ``` - **常用选项**: - `-name`:根据文件名查找。 - `-type`:指定文件类型(如 `f` 表示普通文件,`d` 表示目录)。 - `-mtime`:根据文件修改时间查找。 - `-size`:根据文件大小查找。 - `-exec`:对找到的文件执行特定命令。 - **示例**: 查找当前目录及其子目录下所有以 `.txt` 结尾的文件: ```bash find . -name "*.txt" -type f ``` #### 二、`grep` 命令的功能与用法 `grep` 是一个功能强大的文本搜索工具,用于在文件中查找包含特定模式的行[^1]。它可以结合正则表达式使用,支持复杂的匹配需求。 - **基本语法**: ```bash grep [选项] 模式 [文件] ``` - **常用选项**: - `-i`:忽略大小写。 - `-v`:反向匹配,显示不匹配的行。 - `-r`:递归搜索目录中的所有文件。 - `-n`:显示匹配行的行号。 - `-E`:启用扩展正则表达式。 - **示例**: 在文件 `example.txt` 中查找包含单词 `error` 的行: ```bash grep "error" example.txt ``` #### 三、`find` `grep` 的主要区别 1. **用途不同**: - `find` 主要用于在文件系统中查找文件目录,基于文件属性进行筛选[^4]。 - `grep` 主要用于在文件内容中查找符合特定模式的文本[^1]。 2. **操作对象不同**: - `find` 操作的对象是文件系统中的文件目录。 - `grep` 操作的对象是文件中的文本内容。 3. **递归行为**: - `find` 默认递归查找子目录中的文件目录[^4]。 - `grep` 默认只搜索指定文件;需要使用 `-r` 选项才能递归搜索目录中的文件[^1]。 4. **输出内容**: - `find` 输出的是符合条件的文件或目录路径。 - `grep` 输出的是包含匹配模式的行内容[^1]。 5. **结合使用**: 通常可以将 `find` `grep` 结合使用,先用 `find` 定位目标文件,再用 `grep` 搜索文件内容。例如,查找当前目录及其子目录下所有 `.log` 文件中包含 `error` 的行: ```bash find . -name "*.log" -type f -exec grep "error" {} \; ``` #### 四、总结 `find` `grep` 是 Linux 系统中两个非常重要的命令,各自有独特的功能应用场景。`find` 更适合用于文件目录的查找,而 `grep` 则更适合用于文件内容的文本搜索[^1]。 ```bash # 示例:查找当前目录及其子目录下所有 .c 文件,并统计包含 "main" 的行数 find . -name "*.c" -type f -exec grep -c "main" {} \; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值