find命令的用法

文章目录

    • @[TOC](文章目录)
  • 前言
  • 一、根据文件名来搜索(-name)
  • 二、根据文件类型来搜索 (-type)
  • 三、根据文件大小来搜索 (-size)
  • 四、根据目录层级来搜索
  • 五、同时执行多步操作
  • 六、总结

前言

find命令主要功能是根据文件的属性, 如:文件名, 文件类型, 文件大小, 文件的目录深度 等, 来对文件进行搜索。

一、根据文件名来搜索(-name)

如果需要根据文件名进行搜索, 需要使用参数 -name。根据文件名进行搜索有两种方式: 精确查询和模糊查询。关于模糊查询必须要使用对应的通配符,最常用的有两个, 分别为 *和 ?。其中 * 可以匹配零个或者多个字符, ?用于匹配单个字符。

#语法格式 
find 搜索的路径 -name 要搜索的文件名
#例如
find ./ -name "*.txt"

二、根据文件类型来搜索 (-type)

#语法格式 
find 搜索的路径 -type 要搜索的文件类型
#例如
find ./ -type f

三、根据文件大小来搜索 (-size)

如果需要根据文件大小进行搜索, 需要使用参数 -size。关于文件大小的单位有 k(小写), M(大写), G(大写)。关于文件大小的区间划分,这里举例如下:

# 搜索当前目录下 大于3M的所有文件 (3M, 正无穷)
$ find ./ -size +3M

# 搜索当前目录下 大于等于0M并且小于等于2M的文件 [0M,2M]
$ find ./ -size -3M

# 搜索当前目录下 大于2M并且小于等于3M的文件 (2M,3M]
$ find ./ -size 3M

# 搜索当前目录下 大于1M 并且 小于等于 3M 的文件 (1M,3M]
$ find ./ -size +1M -size -4M

四、根据目录层级来搜索

因为Linux的目录是树状结构, 所有目录可能有很多层, 在搜索某些属性的时候可以指定只搜索某几层目录, 相关的参数有两个, 分别为: -maxdepth和-mindepth。这两个参数不能单独使用, 必须和其他属性一起使用,也就是搜索某几层目录中满足条件的文件。

# 查找文件, 从根目录开始, 最多搜索3, 这个文件叫做 *.txt (1 <= 层数 <= 3)
find / -maxdepth 3 -name "*.txt"

五、同时执行多步操作

-exec、-ok和xargs 都是find命令执行多步操作的参数,其中-ok参数是交互式的,在处理find的结果的时会向用户发起询问。而xargs参数更高效,可以在find命令中直接使用管道完成前后命令的数据传递, 演示如下:

# 查找文件, 并且显示文件的详细信息
find ./ -maxdepth 2  -name "*.txt" | xargs ls -l

六、总结

xargs的效率比 -exec 效率高的原因是:-exec将find查询的结果逐条传递给后边的shell命令,xargs将find查询的结果一次性传递给后边的shell命令。

你可能感兴趣的:(Linux基础知识,linux)