Linux 命令之 find:查找文件

Linux 命令之 find:查找文件温馨提示:本教程的GitHub地址为「linux-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。在Linux命令中,find用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,其支持按名称查找、按正则表达式查找、按文件大小查找、按文件权限查找等多种查询方式。如果在使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将

大家好,又见面了,我是你们的朋友全栈君。

给大家推荐一个比较有趣的公众号,一个陌生人的生活日记
mulanqiyue

温馨提示:本教程的 GitHub 地址为「linux-tutorial」,欢迎感兴趣的童鞋StarFork,纠错。

在 Linux 命令中,find用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,其支持按名称查找、按正则表达式查找、按文件大小查找、按文件权限查找等多种查询方式。如果在使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

  • 语法:find + 目标目录(路径) + <选项> + 参数

常用选项列表

选项 含义
-perm <权限数值> 查找符合指定的权限数值的文件或目录
-type <文件类型> 只寻找符合指定的文件类型的文件
-name <范本样式> 指定字符串作为寻找文件或目录的范本样式
-expty 寻找文件大小为 0 Byte 的文件,或目录下没有任何子目录或文件的空目录
-ls 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出
-maxdepth <目录层级> 设置最大目录层级
-mindepth <目录层级> 设置最小目录层级
-exec <执行指令> 假设find指令的回传值为true,就执行该指令
-ok <执行指令> 此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答yY,则放弃执行命令

示例

首先,给出演示使用的文件结构:

0000

  • 示例 1:查找当前目录及其子目录下所有文件和文件夹
find .

01

  • 示例 2:在/testLinux目录下查找以.txt结尾的文件名
// 需要书写完整的路径
find /tmp/cg/testLinux -name "*.txt"

02

  • 示例 3:组合查找文件名以file1开头(与、或、非)file2开头的文件
/**
 * 组合查找语法:
 * -a        与(取交集)
 * -o        或(取并集)
 * -not      非(同 !)
 * !         非(同 not)
 */

find . -name "file1*" -a -name "file2*"
find . -name "file1*" -o -name "file2*"
find . -name "file1*" -not -name "file2*"
find . -name "file1*" ! -name "file2*"

03

  • 示例 4:根据文件类型进行搜索
/**
 * 查找当前目录及所有子目录下的普通文件
 */

find . -type f

04

  • 示例 5:基于目录深度进行搜索
/**
 * 限制最大深度为 3
 */

find . -maxdepth 3 -type f

/**
 * 限制最大深度为 2
 */

find . -maxdepth 2 -type f

05

  • 示例 6:基于文件权限进行搜索
/**
 * 搜索权限为 777 的文件
 */

find . -type f -perm 777

/**
 * 搜索 .txt 格式且权限不为 777 的文件
 */

find . -type f -name "*.txt" ! -perm 777

06

  • 示例 7:借助-exec命令,将当前目录及子目录下所有.txt格式的文件以File:文件名的形式打印出来
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;

07

  • 示例 8:借助-exec命令,将当前目录及子目录下所有 3 天前的.txt格式的文件复制一份到old目录
find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;

08


文件类型参数列表

文件类型参数 含义
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo

文件大小单元列表

文件大小单元 含义
b 块(512 字节)
c 字节
w 字(2 字节)
k 千字节
M 兆字节
G 吉字节

选项列表

选项 含义
-amin <分钟> 查找在指定时间曾被存取过的文件或目录,单位以分钟计算
-atime <24小时数> 查找在指定时间曾被存取过的文件或目录,单位以 24 小时计算
-cmin <分钟> 查找在指定时间之时被更改过的文件或目录
-ctime <24小时数> 查找在指定时间之时被更改的文件或目录,单位以 24 小时计算
-anewer <参考文件或目录> 查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录
-cnewer <参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
-daystart 从本日开始计算时间
-depth 从指定目录下最深层的子目录开始查找
-expty 寻找文件大小为 0 Byte 的文件,或目录下没有任何子目录或文件的空目录
-exec <执行指令> 假设find指令的回传值为true,就执行该指令
-false find指令的回传值皆设为false
-fls <列表文件> 此参数的效果和指定-ls参数类似,但会把结果保存为指定的列表文件
-follow 排除符号连接
-fprint <列表文件> 此参数的效果和指定-print参数类似,但会把结果保存成指定的列表文件
-fprint0 <列表文件> 此参数的效果和指定-print0参数类似,但会把结果保存成指定的列表文件
-fprintf <列表文件> <输出格式> 此参数的效果和指定-printf参数类似,但会把结果保存成指定的列表文件
-fstype <文件系统类型> 只寻找该文件系统类型下的文件或目录
-gid <群组识别码> 查找符合指定群组识别码的文件或目录
-group <群组名称> 查找符合指定群组名称的文件或目录
-help——help 在线帮助
-name <范本样式> 指定字符串作为寻找文件或目录的范本样式
-iname <范本样式> 此参数的效果和指定-name参数类似,但忽略字符大小写的差别
-ilname <范本样式> 此参数的效果和指定-lname参数类似,但忽略字符大小写的差别
-inum <inode编号> 查找符合指定的inode编号的文件或目录
-path <范本样式> 指定字符串作为寻找目录的范本样式
-ipath <范本样式> 此参数的效果和指定-path参数类似,但忽略字符大小写的差别
-iregex <范本样式> 此参数的效果和指定-regexe参数类似,但忽略字符大小写的差别
-links <连接数目> 查找符合指定的硬连接数目的文件或目录
-ls 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出
-maxdepth <目录层级> 设置最大目录层级
-mindepth <目录层级> 设置最小目录层级
-mmin <分钟> 查找在指定时间曾被更改过的文件或目录,单位以分钟计算
-mount 此参数的效果和指定-xdev相同
-mtime <24小时数> 查找在指定时间曾被更改过的文件或目录,单位以 24 小时计算
-newer <参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
-nogroup 找出不属于本地主机群组识别码的文件或目录
-noleaf 不去考虑目录至少需拥有两个硬连接存在
-nouser 找出不属于本地主机用户识别码的文件或目录
-ok <执行指令> 此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答yY,则放弃执行命令
-perm <权限数值> 查找符合指定的权限数值的文件或目录
-print 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式为每列一个名称,每个名称前皆有./字符串
-print0 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式为全部的名称皆在同一行
-printf <输出格式> 假设find指令的回传值为ture,就将文件或目录名称列出到标准输出,格式可以自行指定
-prune 不寻找字符串作为寻找文件或目录的范本样式
-regex <范本样式> 指定字符串作为寻找文件或目录的范本样式
-size <文件大小> 查找符合指定的文件大小的文件
-true find指令的回传值皆设为true
-type <文件类型> 只寻找符合指定的文件类型的文件
-uid <用户识别码> 查找符合指定的用户识别码的文件或目录
-used <日数> 查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算
-user <拥有者名称> 查找符和指定的拥有者名称的文件或目录
-version——version 显示版本信息
-xdev 将范围局限在先行的文件系统中
-xtype <文件类型> 此参数的效果和指定-type参数类似,差别在于它针对符号连接检查
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144874.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月18日 下午3:40
下一篇 2022年5月18日 下午3:40


相关推荐

  • [C语言] 常量与变量

    [C语言] 常量与变量各位小伙伴们 大家好 我是泽奀 本篇博客讲的是 C 语言 常量与变量 还请多多支持

    2026年3月18日
    1
  • 最新扣子(Coze)案例教程:《扣子空间》最新炸裂功能,文章一键转播客,超级简单,效果惊艳,完全免费教程

    最新扣子(Coze)案例教程:《扣子空间》最新炸裂功能,文章一键转播客,超级简单,效果惊艳,完全免费教程

    2026年3月13日
    3
  • 步进电机S(SigMoid)曲线加减速【查表法】

    步进电机S(SigMoid)曲线加减速【查表法】首先感谢以下博客的博主提供的参考公式 https blog csdn net pengzhihui20 article details locationNum 6 首先在本设计中采用的步进电机控制方案为 单片机 16 位定时器比较匹配中断 最好是 16 位及其以上 步进电机驱动 42 步进电机 较高的定时器精度能够实现更好的控制 在步进电机控制中往

    2026年3月17日
    2
  • java创建线程的三种方式及其对比

    java创建线程的三种方式及其对比Java 中创建线程主要有三种方式 一 继承 Thread 类创建线程类 1 定义 Thread 类的子类 并重写该类的 run 方法 该 run 方法的方法体就代表了线程要完成的任务 因此把 run 方法称为执行体 2 创建 Thread 子类的实例 即创建了线程对象 3 调用线程对象的 start 方法来启动该线程 packagecom thread publicclassF

    2026年3月26日
    2
  • 阿里云服务器开放端口设置_阿里云服务器开启全部端口

    阿里云服务器开放端口设置_阿里云服务器开启全部端口一、问题未开放端口号,如何开放端口号呢?咱们下边以redis为例二、操作1、阿里云部分先把服务器上的实例配置打开进入安全组规则选择添加或者手动编辑,我这里已经有了redis,所以随意添加一个为例这样就添加成功了!2、在linux系统中检查端口号是否存在#查看是否开启了6379端口号firewall-cmd–list-ports发现报如下错误:表示没有开启防火墙,下面我们先开启防火墙#开启防火墙systemctls…

    2026年4月15日
    5
  • odrive入门教程(securecrt使用教程串口)

    ODrive官方入门指南中,采用的是USB连接控制模式(中文翻译版本链接)使用的是NativeProtocol。当我们需要尝试串口通信实现时,需要专程ASCII协议来进行串口通信实现相关的命令,结合着入门指南以及ODrive中的相关属性方法参数,将流程中用到的相关方法整理如下:importserialimporttimeted=serial.Serial(port=’/dev/tty.wchusbserial1470′,baudrate=115200)ted.writ

    2022年4月16日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号