二、linux find命令详解

目录

2. find【擅长在目录下找文件】

2.1 常用查询选项option

      2.1.1 -name:根据名称匹配

      2.1.2 -iname:忽略文件名称大小写

      2.1.3 -user:根据所属用户组进行查询

      2.1.4 -type:根据文件类型进行查找

      2.1.5 -size:根据文件大小匹配

      2.1.6 -mindepth n:从第n级目录开始查(从哪个深度开始查找)

      2.1.7 -maxdepth n:表示至多搜索到第n-1级子目录(最深深度)

      2.1.8 -regex:基于正则表达式匹配文件路径

      2.1.9 -iregex:基于正则表达式匹配文件路径(忽略大小写)

      2.1.10 -inum:根据文件inode编号查找

      2.1.11 -perm:根据文件权限查找

      2.1.12 -path:根据路径名称查找指定子目录信息

2.2 根据时间进行查找

2.3对查找的文件如何操作

      2.3.1 -print:打印输出。默认的选项,即打印出找到的结果

      2.3.2 -exec:对搜索到的文件执行特定的操作

      2.3.3 -delete:将查找出的文件删除

      2.3.4 -prune:将查找出的文件做裁剪处理

      2.3.5 逻辑运算符

      2.3.6 xargs:可以将一个命令的输出作为参数发送给另一个命令


2. find【擅长在目录下找文件】

find命令用来指定目录下查找文件

  • 语法:find path -option
  • 进阶:find path -option [-print] [-exec command] { } \;
  • 注意:{}表示查询结果

2.1 常用查询选项option

      2.1.1 -name:根据名称匹配

用法举例


0. 前提准备


 1. 已知文件名称,进行精确查找


 2. 文件名称未知,进行模糊查找

      2.1.2 -iname:忽略文件名称大小写

用法举例


1. 忽略文件名称大小写查找

      2.1.3 -user:根据所属用户组进行查询

用法举例


      2.1.4 -type:根据文件类型进行查找

文件类型
---------------------------
f      表示文件
d      表示目录
c      表示字符设备文件
b      表示块设备文件
l      表示链接文件
p      表示管道文件

用法举例


0. 前提准备


 1. 按照文件类型查找


 2. 递归查找所有

: wc -l 统计输出行数

      2.1.5 -size:根据文件大小匹配

参数
--------------------------
-n    小于大小为n的文件
+n    大于大小为n的文件
​查找数据单位信息
------------------------
c       for bytes
k       for Kilobytes (units of 1024 bytes)
M       for Megabytes (units of 1048576 bytes)
G       for Gigabytes (units of 1073741824 bytes)

​

用法举例


      2.1.6 -mindepth n:从第n级目录开始查(从哪个深度开始查找)

用法举例


1. 按照目录层级查找数据

2. 从/etc的第三级子目录开始搜索

      2.1.7 -maxdepth n:表示至多搜索到第n-1级子目录(最深深度)

用法举例


1. 按照目录层级查找数据

      2.1.8 -regex:基于正则表达式匹配文件路径

用法举例


1.查找/oldboy目录下以.txt结尾的文件

      2.1.9 -iregex:基于正则表达式匹配文件路径(忽略大小写)

用法举例


1.查找/oldboy目录下以.txt结尾的文件(忽略大小写)

      2.1.10 -inum:根据文件inode编号查找

       文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。

       文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为索引节点,也叫i节点。因此,一个文件必须占用一个inode,但至少占用一个block。

查看indoe编号的命令:

  • stat 文件/目录名称   ---- 查看文件/目录inode信息,从而查看文件/目录inode编号
  • ls -i                           ---- 后面不加文件名称,会显示当前目录下所有文件的inode编号
  • df -i                           ---- 查看硬盘分区的inode总数和已使用情况

用法举例


1. 根据文件inode编号查找文件(假设已经知道/oldboy目录下某一文件inode编号为8757)

      2.1.11 -perm:根据文件权限查找

文件权限类型
------------------------
读权限(r)  :4
写权限(w)  :2
执行权限(x):1
没有权限(-):0

举例:
------------------------
rw-r---wx :643
-wxr-xr-- :354
r--rwx--x :471

------------------------
注:通常使用数字表示权限

用法举例


1. 查找/oldboy目录下权限为644的文件/目录

      2.1.12 -path:根据路径名称查找指定子目录信息

用法举例


1. 查找/oldboy/的下级目录下,是否存在名称为file的文件

2.2 根据时间进行查找

UNIX/Linux文件系统每隔文件都有三种时间戳

  • 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间
  • 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间
  • 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间

参数


-mtime:根据文件更改时间查找,单位天

  • -n    n天以内修改的文件
  • +n   n天以外修改的文件
  • n     正好n天修改的文件

-mmin:根据文件更改时间查找,单位分钟

  • -n    n分钟以内修改过的文件
  • +n   n分钟之前修改过的文件

用法举例


1. 查询/oldboy目录下30分钟之前修改过的文件


 2. 查询/eoldboy目录下30分钟之内修改过的文件


 3. 查询/etc目录下,5天以内修改且是目录格式的文件


 4. 查询/oldboy目录下,10天之前修改,且是文件格式的文件

2.3对查找的文件如何操作

      2.3.1 -print:打印输出。默认的选项,即打印出找到的结果

用法举例


-print是默认选项,通常不使用-print也会输出查找的结果

      2.3.2 -exec:对搜索到的文件执行特定的操作

固定格式

-exec 命令 {} +  或-exec 命令 {} \; 

注:

{}表示查询的结果

; 代替 + 号,前面附加的 \; 表示转义特殊符号

-ok和-exec的功能一样,只是每次操作都会给用户提示

用法举例


1. 使用-exec命令 将/oldboy目录下文件类型为 f 的文件详细列出来

1. 使用-ok命令 将/oldboy目录下文件类型为 f 的文件详细列出来

      2.3.3 -delete:将查找出的文件删除

用法举例


 1. 把/oldboy目录中的oldbaby.txt文件删除

      2.3.4 -prune:将查找出的文件做裁剪处理

用法举例


1.在/oldboy目录下,查找除/oldboy/02目录中以.txt文件结尾的文件

[root@hero oldboy]# find /oldboy/ -path '/oldboy/02' -prune -o -name "*.txt"

注:-prune用法非常严格,且本人尝试并不好用

1)-prune 必须和 -path,-o 一起使用
2)-prune -o 的顺序不 能调换
3)-name等必须放在-prune -o后面才能使用

      2.3.5 逻辑运算符

-a :与(默认情况查询条件之间都是“与”的关系)
-o :或
-not | !:非

用法举例


1. 查找目录/oldboy中以.txt或者以.pdf结尾的文件

 2. 查找目录/oldboy下不是以.txt结尾的文件

      2.3.6 xargs:可以将一个命令的输出作为参数发送给另一个命令

用法举例


1. 当前目录搜索文件,文件内容包含“oldboy”内容

2. 统计代码行数(grep -v '^$'过滤空白行 wc -l )

2.3 扩展:查找关键字出现的行数

Linux:查看文件内容(cat) 查找关键字(grep) 统计(wc -l)

#cat查找关键字出现的行数
语法:cat 文件 |grep 关键字 |wc -l
-----------------------------------------------------------------
举例:
[root@hero oldboy]# cat /oldboy/oldboy.txt |grep "oldboy" |wc -l
9
Linux系统中的wc(word count)命令的功能为统计中指定文件中的字节数、字数、行数、并将统计结果显示输出
-----------------------------------
#1.命令格式:
wc [选项]文件...
-----------------------------------
#2.命令参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小天才。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值