【Linux学习笔记】8. Linux查找命令:find和grep详解

Linux查找命令

  • find查找文件
  • grep查找字符串

1. find命令

有多种使用方式:

  • 根据文件名搜索
  • 根据文件大小搜索
  • 根据文件类型搜索
  • 根据修改时间搜索
  • 根据文件权限搜索
  • 根据文件所有者搜索

上面的各种方式可以利用逻辑与或非组合起来使用。

功能一:按文件名搜索

常用用法

find path -option content 

参数说明

参数说明
path搜索路径,可以为多个目录,默认为当前目录“.
-option搜索选项,用来指定搜索的依据,比如指定文件名"-name"
content搜索内容,一般是文件名

关于第二个参数-option的选项非常多,按文件名搜索常用的有:

  • -name: 按照文件名搜索
  • -iname:按照文件名搜索,不区分大小写
  • -inum: 按照inode号搜索

举个例子

在根目录下査找文件名是yum.conf的文件:

find / -name yum.conf
find / -iname YUM.CONF	#可以不区分大小写,这样也可以搜出来

在当前目录根据inode号搜索文件:

find . -inum 262147

这是区分硬链接文件的重要手段,硬链接文件的 inode 号是一致的。

功能二:按文件大小搜索
find path -option content 
参数说明
path搜索路径,可以为多个目录,默认为当前目录“.
-option搜索选项,按照文件大小搜索需指定为"-size"
content搜索内容,指定文件大小,用“+,-”指定范围

关于第二个参数-option搜文件大小要指定为-size

关于第三个参数content的选项在按照文件大小搜索时可以指定文件的大小

  • +:表示大于
  • -:表示小于
  • c:表示单位为字节
  • k:表示单位为KB
  • M:表示单位为MB
  • G:表示单位为GB

举个例子

査找当前目录下大小刚好是25KB的文件

find . -size 25k

查找当前目录下小于25MB的文件

find . -size -25M

查找当前目录下大于25Byte的文件

find . -size +25c
功能三:按文件类型搜索

-option的选项:

  • -type d:查找目录
  • -type f:查找普通文件
  • -type l:查找软链接文件

举个例子

查找/etc目录下有哪些子目录:

find /etc -type d
功能四:按修改时间搜索

-option的选项:

  • -atime [±]时间: 按照文件中的数据最后被访问的时间搜索
  • -mtime [±]时间: 按照文件内容被修改的最后时间搜索
  • -ctime [±]时间: 按照文件的权限、拥有者、所属的组、链接数发生改变的时间搜索

举个例子

查找当前目录5天内修改过的文件

find . -mtime -5
功能五:按文件权限搜索

第二个参数-option要指定为-perm

第三个参数content可以指定权限,如777,

指定权限时可以支持[+/=]:

  • 777表示查找权限等于"777"的文件
  • -777表示包含"777"全部权限的文件
  • +777表示包含“777”任一权限的文件

举个例子

查找当前目录包含200权限的文件:

find . -perm -200

这个命令可以查找出当前目录权限为2xx6xx7xx权限的文件。

功能六:按文件所有者搜索

-option的选项有:

  • -uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件
  • -gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件
  • -user 用户名:按照用户名査找所有者是指定用户的文件
  • -group 组名:按照组名査找所属组是指定用户组的文件
  • -nouser:査找没有所有者的文件

举个例子

查找文件所有者是root的文件

find . -user root
组合搜索
find path -option1 content1 -logic -option2 content2

-logic的选项有:

  • -a:and逻辑与
  • -o:or逻辑或
  • -not:not逻辑非

默认缺省时是-a逻辑与的关系。

举个例子

在当前目录下搜索大于2KB,并且文件类型是普通文件的文件

find . -size +2k -a -type f
#等价于
find . -size +2k -type f

在当前目录下搜索文件名要么是hello.c的文件,要么是main.c的文件

find . -name hello.c -o -name main.c

2. grep命令

功能:用来搜索文件内容含指定字符串的行。

基本用法:

grep -option "string" pathfile

关于第二个选项-option是grep命令的关键,可以指定搜索的方式:

选项功能
-rrecursive递归查找
-vinvert,反向查找,即不包含"string"的行
-nnum,同时显示行号
-iignore,不区分大小写
-l显示内容包含“string”的文件
-L显示内容不包含“string”的文件
-A1after 1,同时显示查找到的内容的后1行
-B2before 2,同时显示查找到的内容的前2行
-C3相当于after 3 + before 3,同时显示前后3行
-e相当于egrep,扩展正则表达式

举个例子

找出当前目录及子目录中.sh文件内容含有"test"的文件,并显示行号和前后1行

grep -nrC1 "test" *.sh

image-20220421190611256

找出当前目录中的所有txt文件内容中含有first单词的文件

grep -l "first" *.txt

反向操作只需把 -l 变成 -L 即可。

利用管道将find和grep联合使用

从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “ERROR” 的行:

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

从当前目录开始查找所有扩展名为 .in 的文本文件,并找出包含 “thermcontact” 的行:

find . -name "*.in" | xargs grep "thermcontact"

2022.04.21

参考:C语言中文网 菜鸟教程

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值