Linux命令之查找文件find

article/2025/10/6 0:48:33

概述

find 命令可以在目录层次结构中搜索符合指定条件的文件或目录,并且可以它们执行指定的操作。而搜索条件可以是文件权限、文件类型、日期、大小等。

在这里插入图片描述

语法

该命令的语法如下:

# find 命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足条件的文件并对之采取相关的操作
find [指定起始目录] 查找条件 [操作]

该命令支持的选项有:

选项说明
-mount, -xdev只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n在过去 n 分钟内被读取过
-anewer file比文件 file 更晚被读取过的文件
-atime n在过去 n 天内被读取过的文件
-cmin n在过去 n 分钟内被修改过
-cnewer file比文件 file 更新的文件
-ctime n在过去 n 天内创建的文件
-mtime n在过去 n 天内修改过的文件
-empty空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name文件名称符合 name 的文件。iname 会忽略大小写
-size n文件大小 是 n 单位
-type c文件类型是 c 的文件

使用

按文件名查找文件

按文件名查找文件支持的选项有:

选项说明
-name <指定文件名>按指定文件文件名查找文件
-iname <指定文件名>按指定文件文件名查找文件,但忽略文件名的大小写

命令格式如下:

# 语法
find 指定起始目录 -name 指定文件名
# 示例
find /root/ -name test.txt 
find /root/ -iname TEST.txt

在这里插入图片描述

按扩展名查找文件

按扩展名搜索文件与按名称搜索文件相同,都是使用 -name 选项,但需要用到通配符 *,如要匹配所有以 .txt 后缀结尾的文件,就要写成 -name *.txt。如果要查与正则表达式不匹配的所有文件,可以加上 -not 选项,即如果要查找所有不以 .txt 后缀结尾的文件,就要写成 -not -name *.txt

选项说明
-not EXPR 不与正则表达式 EXPR 匹配的情况

语法如下:

# 语法
# 查找指定目录下所有以指定后缀结尾的文件
find 指定起始目录 -name *指定后缀
# 查找指定目录下所有不以指定后缀结尾的文件
find 指定起始目录 -not -name *指定后缀
# 示例
# 查找 /root/abc/ 目录下所有以 .txt 为后缀结尾的文件
find /root/abc/ -name *.txt
# 查找 /root/abc/ 目录下所有不以 .txt 为后缀结尾的文件
find /root/abc/ -not -name *.txt

在这里插入图片描述

按文件类型查找文件

有时您可能需要搜索特定文件类型,例如常规文件、目录或符号链接。在 Linux 中,一切都是文件。要根据文件类型搜索文件,请使用 -type 选项和以下描述符之一来指定文件类型:

文件类型描述符说明
f一个普通文件
d目录
l符号链接
c字符设备
b块设备
pFIFO
ssocket 文件

语法格式如下:

# 语法
find 指定起始目录 -type 文件类型描述符 
# 示例,查找 /root/abc/ 目录下所有普通文件
find /root/abc/ -type f

在这里插入图片描述

按大小查找文件

要根据文件大小查找文件,使用 -size 选项与大小标准一起传递。可以使用以下后缀来指定文件大小:

文件大小标识后缀说明
b512字节块,默认
c字节
w两字节
k千字节
M兆字节
G千兆字节

我们可以查找文件大小恰好等于、小于或大小指定大小的文件,其命令格式如下:

# 语法
find 指定起始目录 -size [+-]大小[文件大小标识后缀]
# 示例
# 在 /root/ 目录下查找文件大小等于 10 字节的文件
find /root/ -size 10c
# 在 /root/ 目录下查找文件大小小于 1MB 的文件,其中减号表示小于
find /root/ -size -1M
# 在 /root/ 目录下查找文件大小大于 1MB 的文件,其中加号表示大于
find /root/ -size +1M
# 在 /root 目录下查找文件大小在 1MB 和 21MB 之间的文件
find /root -size +1M -size -21M

在这里插入图片描述

注:

  • +20 表示 20 之后,如 21、22、23 等。
  • -20 表示 20 之前,如 19、18、17 等。
  • 20 表示恰好是 20。

按时间查找文件

我们可以通过文件的修改时间和访问时间来查找文件,跟文件时间有关的选项有:

选项说明
-amin N查找 N 分钟前被访问过的所有文件
-atime N查找 N 天前被访问过的所有文件
-cmin N查找 N 分钟前文件状态被修改过的所有文件
-ctime N查找 N 天前文件状态被修改过的所有文件
-mmin N查找 N 分钟前文件内容被修改过的所有文件
-mtime N查找 N 天前文件内容被修改过的所有文件

示例如下:

# 查找 /root/ 目录下 3 天前文件内容被修改过的文件
find /root/ -mtime 3 

在这里插入图片描述

按权限查找文件

如果想要根据权限来查找文件,那么得使用 -perm 选项:

# 语法
find 指定起始目录 -perm 表示权限的数字
# 示例,查找 /root/ 目录下所有具有可读可写可执行权限的文件
find /root/ -perm 777

在这里插入图片描述

按所有者查找文件

如果我们要查找指定所有者或所属组的文件,那么可以使用以下选项:

选项说明
-gid N查找组 id 是 N 的所有文件
-uid N查找用户 id 是 N 的所有文件
-group 组名查找属于指定用户组的所有文件
-user 用户名查找属于指定用户的所有文件

示例如下:

# 查找 /root/ 目录下所有属于用户 zs 的文件
find /root/ -user zs

在这里插入图片描述

逻辑运算符组成的复合条件

该命令还支持用逻辑运算符 notandor 组成的复合条件。各逻辑运算符说明如下:

逻辑运算符说明举例例子说明
and逻辑与,在命令中用选项 -a 表示,是默认选项,表示当所有条件都满足时,查找条件才匹配find /root/ -name test.txt -user 'zs'查找 /root/ 目录下文件名为 test.txt 并且是 zs 创建的文件
or逻辑或,在命令中用选项 -o 表示,表示当只要有一个条件被满足时,查找条件就匹配find /root/ -name test.txt -o -user 'zs'查找 /root/ 目录文件名为 test.txt 或者是由 zs 创建的文件
not逻辑非,在命令用 ! 表示,表示查找不满足给定条件的文件find /root/ ! -name test.txt查找 /root 目录下所有文件名不少 test.txt 的文件

在这里插入图片描述

注:当由多个逻辑选项时,可以用括号把这些逻辑选项括起来。但为了避免 Shell 本身对括号引起误解,在话号前需要加转义字符 \ 来去除括号的意义。例:find /root/ \(-name test.txt -user 'zs' \)

对找到的文件执行操作

我们可以对找到的文件直接执行操作,那么支持的选项有:

选项说明
-exec 命令名称 {} \;对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{} 表示命令的参数即为所找到的文件;命令的末尾必须以 \; 结束。
ok 命令名称 {} \;对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。

示例如下:

# 在 /root/ 目录下查找文件名为 test.txt 文件,找到之后统计该文件的行数
find /root/ -name test.txt -exec wc -l {} \;

在这里插入图片描述

查找隐藏文件

在 Linux 系统中凡是文件名或目录名是以 . 开头的都是隐藏文件。通过 ls 命令是看不到的,必须通过 ls -a 才能看到这些隐藏的文件。
在这里插入图片描述
如果只是通过 find 命令是会找出所有文件的,包括隐藏文件和非隐藏文件。但有时候如果我们想要只查找隐藏或只查找非隐藏文件,就必须结合 grep 命令一起使用才能达到想要的效果。因为隐藏文件是 . 开头的,所以根据这个特性,用正则表达式去匹配,但是在正则表达式中 . 是有特殊含义的,所以要进行转义 \.。命令格式如下:

# 只查找指定目录下的所有隐藏文件
# `\.` 表示匹配普通的点字符 `.`;而 `\` 又是特殊字符需要进行转义就是 `\\.`;而由于 find 命令查询的结果是文件路径,所以隐藏文件的点字符的前一个字符是 `/`
find 指定目录 -type f | grep "/\\."
# 示例,查找 /home 目录下的所有隐藏文件
find /home -type f | grep "/\\."

在这里插入图片描述

# 只查找指定目录下的所有非隐藏文件
# `\.` 表示匹配普通的点字符 `.`;而 `\` 又是特殊字符需要进行转义就是 `\\.`;而由于 find 命令查询的结果是文件路径,所以隐藏文件的点字符的前一个字符是 `/`
# -v 选项表示除匹配项之外的所有项
find 指定目录 -type f | grep -v "/\\."
# 示例,查找 /home 目录下的所有隐藏文件
find /home -type f | grep -v "/\\."

在这里插入图片描述

参考资料:

  • Find Command in Linux (Find Files and Directories)
  • find 命令
  • 菜鸟教程-Linux find 命令
  • find命令详解

http://chatgpt.dhexx.cn/article/8w0QdTBC.shtml

相关文章

MySql数据库主键外键与数据库设计

MySql数据库主键外键与数据库设计 首先要指出的&#xff1a; 列、字段、属性是一个概念 行、记录、元组是一个概念 MySQL数据库CONSTRAINT约束&#xff1a;非空约束&#xff0c;唯一约束&#xff0c;主键约束&#xff0c;外键约束 show create table table_name\G;可以查看已…

mysql外键

虽然阿里不推荐使用MySQL外键&#xff0c;但是我们的项目如果对数据的一致性不太敏感&#xff0c;外键还是非常好的&#xff01;减少数据库的数据冗余。如果对数据一致性有着非常高的要求&#xff0c;如&#xff1a;使用事务&#xff0c;那么强烈建议该表及关联表不要使用外键&…

数据库外键理论及MySQL外键实现规定

文章目录 1. 关系数据库外键概念理论&#xff08;大学时学习的概念&#xff09;1.1 实体完整性1.2 ✅ 参照完整性1.3 用户定义完整性1.4 ✅ 参照完整性的SQL实现1.5 ✅ MySQL数据库操作示例1.6 ✅ neo4j中的关系和mysql的外键 2 MySQL中实现的规定2.1 基本概念2.2 ✅ 命名规则2…

数据库(外键及其约束理解)

一&#xff1a;首先是外键的定义 如果一个字段X在一张表&#xff08;表一&#xff09;中是主关键字&#xff0c;而在另外一张表&#xff08;表二&#xff09;中不是主关键字&#xff0c;则字段X称为表二的外键&#xff1b;换句话说如果关系模式R1中的某属性集不是自己的主键&am…

数据库的外键:主表与从表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Mysql的外键是什么&#xff0c;有何用&#xff1f;代码演示总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 最近在学习数据库&…

【数据库】外键的作用

前言 说到外键&#xff0c;一般就会牵扯出约束。不谈约束&#xff0c;起始外键就是一个普通的字段&#xff08;Column&#xff09;&#xff0c;起到一个关联的作用。 先把约束放一边&#xff0c;看看外键有哪些作用。 建立表中记录的一对一的关系 学生表&#xff1a; 手机表…

数据库之外键

外键约束&#xff08;FOREIGN KEY&#xff09;用来在两个表的数据之间建立连接&#xff0c;它可以是一列或者多列。一个表可以有一个或多个外键。 &#xff08;1&#xff09;外键定义&#xff1a;一张表中某一列的值使用的是另外一张表的主键值。这个列就被称为外键列。 &#…

数据库mysql表怎么设置外键_如何设置数据库中的外键

展开全部 创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只e69da5e887aa62616964757a686964616f31333365653739有主键没有外键时不行的。 建外键的前提是此外键必须是另外一个表的主键。建外键的步骤: 第一步、打开要建外键表的设计器,右击…

数据库表外键设置

http://blog.csdn.net/pplsunny/article/details/7747340 我们在建立数据库的时候&#xff0c;需要为每张表指定一个主键&#xff0c;所谓主键就是能够唯一标识表中某一行的属性或属性组&#xff0c;一个表只能有一个主键&#xff0c;但可以有多个候选索引。因为主键可以唯一标…

数据库——外键的作用

我们用一个比较实际的例子来描述问题&#xff0c;并讲解外键作用&#xff1a; 当我们在网上购物的时候&#xff0c;我们有我们的帐号&#xff0c;还有我们所在不同地方的地址信息如公司&#xff0c;学校&#xff0c;家里&#xff0c;或者给亲戚朋友送个礼物&#xff0c;收货人…

mysql数据库添加外键的四种方式

文章目录 一、添加外键的四种方式二、文档下载 一、添加外键的四种方式 1、 建表时直接使用FOREIGN KEY&#xff0c;这种方式外键名称自动生成。如下图。 FOREIGN KEY (user_id) REFERENCES t_user(id)2、 建表时使用CONSTRAINT指定外键名称。如下图。 CONSTRAINT fk_studen…

彻底理解数据库外键

外键的定义 如果 公共关键字在一个关系中是 主关键字&#xff0c;那么这个 公共关键字被称为另一个关系的 外键。由此可见&#xff0c;外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表&#xff0c;具有此外键的表被称为主表的从表。外键又称作外…

什么是数据库外键?

外键 Teacher_id就是student的外键 Teacher是主表&#xff0c;student是子表&#xff08;从表&#xff09; 外键就是一个表中的一个字段引用了另一个表中的主键&#xff0c;引用的表叫做子表&#xff0c;被引用的表叫做主表&#xff0c;外键是一种约束&#xff0c;描述的是表之…

数据库常用命令之外键(foreign key)多对多(总结,基础)

我是小白&#xff0c;刚接触MySQL不久&#xff0c;现阶段正在学习&#xff0c;为此在这里留下自己的学习笔记。如果有错误的地方还请大家见谅&#xff0c;评论或者私发我错误的地方哦&#xff0c;谢谢大家&#xff0c;嘿嘿~ 外键&#xff08;foreign key&#xff09; 引言&…

MySQL中的外键(foreign key)

阅读目录 前言一、外键作用及其限制条件1 外键的定义2 外键的作用3 外键创建限制 二、外键创建方法1 创建外键的语法2 举例&#xff08;1&#xff09;创建两张表&#xff08;2&#xff09;创建外键&#xff08;3&#xff09;查看表结构 三、验证外键作用1 先向主表中添加数据2 …

显示gsensor即时数据的apk 用gsensor来判断手机的静和动

即时显示gsensor的数据&#xff0c;可以在调试重力感应器驱动和测试手机性能时起到很好的作用。类似的&#xff0c;SensorEventListener还可以用在其他感应器的场合&#xff0c;比如光感应、地磁感应。这里用两种方式来完成读取并显示gsensor数据的功能&#xff0c;一种是activ…

老化测试Gsensor失败分析

在log中搜Gsensor可以看到如下&#xff1a; 在Y:\1\18045c1老化\bug127302c1_slog\last_log\2015-01-01-06-19-23\android\0-events-06-19-24.log中搜到如下&#xff1a; 行号 500 - 01-01 06:36:08.996 664 2050 I am_create_activity: [0,509924699,15,com.wingtech.runin…

MTK 9.0平台调试gsensor

MTK 9.0平台调试gsensor ----型号为&#xff1a;stk8baxx 1 查看原理图可以知道stk8baxx重力传感器 使用i2c1通道进行通讯&#xff0c;由于该重力传感器是不使用中断模式的进行触发的&#xff0c;所以不需要配置中断引脚。由此可以配置stk8baxx重力传感器的dts dts文件配置如…