Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例
目录
一、find命令
二、find命令的语法
(一)语法格式
(二)选项
1、选项(option)介绍
2、控制符号链接的option
3、调试选项debugopts
4、优化选项
(三)表达式expression
1、选项options
2、测试 tests
3、动作actions
三、实际应用的例子
1、按名称查找文件:
2、按文件类型查找:
3、按文件大小查找:
4、按文件修改时间查找:
5、按文件权限查找:
6、按文件所有者查找:
7、组合条件查找:
8、与grep, xargs等结合,在结果中筛选或执行命令:
9、查找并执行命令:
10、忽略或避免某些条件:
12、递归查找:
一、find命令
Linux的find命令是最重要和最常用的命令之一,用于在目录树中查找文件和目录。它可以根据各种条件进行搜索,包括文件名、权限、用户和组、文件类型、文件大小、日期和时间等。
同时也有一些组合应用,可以方便进行各种操作。
很多文档都根据命令的语法来介绍,要想完成一个具体的搜索任务,还需要看每个命令,找到对应的用法。
为了节省大家的时间,本文简单介绍下find的语法,以方便查询;同时按照一些实际需要完成的任务,来介绍find的一些用途。也就是根据具体的应用场景来使用find命令。
二、find命令的语法
(一)语法格式
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
(二)选项
1、选项(option)介绍
表达式列表中的“选项”。这些选项控制find的行为,但在最后一个路径名之后立即指定。五个“real”选项-H、-L、-P、-D和-O必须出现在第一个路径名之前(如果有的话)。双破折号--也可以用来表示任何剩余的参数都不是选项(尽管如果在起始点列表中使用通配符,则确保所有起始点都以“./”或“/”开头通常更安全)。
2、控制符号链接的option
-H、-L和-P选项控制符号链接的处理。后面的命令行参数将被视为文件名或要检查的目录,直到第一个以“-”开头的参数,或参数“(”或“!”。该参数和后面的任何参数自变量被认为是描述要搜索的内容的表达式。如果没有给出路径,则使用当前目录。如果没有给出任何表达式,而是使用表达式-print(但无论如何,您可能应该考虑使用-print0)
3、调试选项debugopts
打印诊断信息;这有助于诊断find为什么没有按您的意愿进行操作的问题。调试列表选项应以逗号分隔。在findutils的各个版本之间,调试选项的兼容性并不能得到保证。对于完整的有效调试选项列表,请参阅find-D帮助的输出。有效的调试选项包括帮助解释调试选项
tree 以原始和优化的形式显示表达式树。
stat 使用stat和lstat系统调用检查文件时打印消息。find程序尽量减少此类调用。
opt 打印与表达式树的优化有关的诊断信息;请参阅-O选项。
rates 打印一个摘要,指示每个谓词成功或失败的频率。
4、优化选项
-Olevel 启用查询优化。find程序对测试进行重新排序,以加快执行速度,同时保持整体效果;也就是说,具有副作用的谓词不会相对于彼此重新排序。优化级别有0,1,2,3几个等级。
(三)表达式expression
表达式expression由1选项options(影响整体操作而不是特定文件的处理,并且总是返回true)、2测试tests(返回true或false值)和3动作actions(具有单向作用,并返回true或false值)组成,所有这些都由运算符分隔。
1、选项options
所有选项始终返回true。除了-daystart、-follow和-regextype之外,这些选项会影响所有测试,包括在该选项之前指定的测试。这是因为在解析命令行时会处理选项,而在检查文件之前,测试不会执行任何操作。-daystart、-follow和-regextype选项在这方面有所不同,仅对稍后出现在命令行中的测试有影响。因此,为了清晰起见,最好将它们放在表达式的开头。如果你不这样做,就会发出警告。常用的有如下:
-daystart
-depth
-follow
-help
-maxdepth
-mindepth
-mount
-noleaf
-version
2、测试 tests
一些测试,例如-newerXY和-samefile,允许在当前检查的文件和命令行上指定的某个参考文件之间进行比较。当使用这些测试时,参考文件的解释由选项-H、-L和-P以及之前的任何后续选项决定,但在解析命令行时,只检查一次参考文件。如果无法检查引用文件(例如,stat(2)系统调用失败),则会发出错误消息, find以非零状态退出。有如下常用的tests:
- +n: 查找比 n 大的。
- -n: 查找比n 小的。
- n: 查找刚好是n的
- -amin n:查找在 n 分钟内被访问过的文件。
- -atime n:查找在 n*24 小时内被访问过的文件。
- -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
- -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
- -mmin n:查找在 n 分钟内被修改过的文件。
- -mtime n:查找在 n*24 小时内被修改过的文件。
- -name pattern:按文件名查找,支持使用通配符 * 和 ?。
- -type type: 按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
- -size [+-]size[cwbkMG]: 按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
- -mtime days: 按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
- -user username:按文件所有者查找。
- -group groupname:按文件所属组查找。
3、动作actions
常见的有如下:
-delete
-exec command
-exec command {} +
-execdir
-printf format
-prune True;
三、实际应用的例子
1、按名称查找文件:
(1)查找当前目录及其子目录下名为 "example.txt" 的文件:
find . -name "example.txt"`
(2)查找根目录/及其子目录下名为 "example.txt" 的文件:
find / -name "example.txt"`
(3)当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"`
2、按文件类型查找:
(1)查找当前目录及其子目录下的所有普通文件:
find . -type f
(2)查找当前目录及其子目录下的所有目录:
find . -type d
3、按文件大小查找:
查找大于 10MB 的文件:
find . -size +10M
4、按文件修改时间查找:
(1)查找在过去 7 天内修改过的文件:
find . -mtime -7
(2)查找 /var/log/test 目录下在 7 天前修改过的文件:
find /var/log/test -mtime +7
5、按文件权限查找:
查找所有可执行文件:
find . -executable
6、按文件所有者查找:
查找所有属于用户 "john" 的文件:
find . -user john
7、组合条件查找:
(1)查找所有 .txt 扩展名且在过去 7 天内修改过的文件:
find . -type f -name "*.txt" -mtime -7
(2)查找 /usr/local/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find /usr/local/log -type f -mtime +7 -ok rm {} \;
8、与grep, xargs等结合,在结果中筛选或执行命令:
(1)grep可以用来将 find 的输出作为参数,再进行一次筛选,例如,查询所有 .cpp扩展名的文件,同时文件名或者路径中带有“视频监控平台”的文件,可以这样做:
find . -name "*.cpp" | grep 视频监控平台
执行结果如下:
(2)xargs 可以用来将 find 的输出作为参数传递给其他命令。例如,如果你想删除所有 .bak 扩展名的文件,你可以这样做:
find . -name "*.bak" | xargs rm -f
9、查找并执行命令:
(1)可以使用 -exec 选项来对找到的每个文件执行一个命令。例如,为找到的所有 .sh文件打印其修改时间:
find . -name "*.sh" -exec ls -l {} \;
执行结果如下:
(2)查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件,并列出完整路径:
find . -type f -perm 644 -exec ls -l {} \;
(3)查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;
(4)找到tes文件并执行操作(例如删除):
find /path/search -name "tes" -exec rm {} \;
10、忽略或避免某些条件:
(1)使用 -prune 选项来避免进入某些目录。例如,避免进入 .git 子目录:
find . -path .git -prune -o -print
(2)查找所有 .txt 文件,但忽略大小为 0 的文件:
find . -name "*.txt" ! -size 0 -print
12、递归查找:
默认情况下,find 命令会递归地查找子目录。如果你想限制搜索深度,可以使用 -maxdepth 和 -mindepth 选项。例如,只在当前目录中查找(不包括子目录):
find . -maxdepth 1 -name "*.txt" -print
相关文章:

Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例
目录 一、find命令 二、find命令的语法 (一)语法格式 (二)选项 1、选项(option)介绍 2、控制符号链接的option 3、调试选项debugopts 4、优化选项 (三)表达式expression 1、选项options 2、测试…...

服务器数据恢复—OceanStor存储raid5热备盘同步数据失败的数据恢复案例
服务器数据恢复环境: 华为OceanStor某型号存储,存储内有一组由24块硬盘组建的raid5阵列,配置1块热备盘。 服务器故障: 该存储raid5阵列中有一块硬盘离线,热备盘自动激活并开始同步数据,在热备盘同步数据的…...

Xline v0.6.1: 一个用于元数据管理的分布式KV存储
Xline是什么?我们为什么要做Xline? Xline是一个基于Curp协议的,用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议,需要两次RTT才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低&a…...

【CSS】解决height = line-height 文字不垂直居中(偏上、偏下)的问题
解决办法1: 查看 font-family 属性,确认是否是因为字体而导致的不垂直居中问题。 其他小知识: 基线就是小写x字母的下边缘(线) 就是我们常说的 基线。line-height 属性设置的行高也就是定义的两行文字基线之间的距离! 参考文章:…...

天津想转行学python培训班靠谱吗?
现在的职业如此繁多,很多人把高薪当成衡量工作好坏的重要标准,因此IT行业以超出其他行业几倍薪资水平成为不错的选择,而Python又以其简单易学好上手成为大家所青睐的学习目标。 Python发展前景如何 Python语言就业发展方向广泛:…...

(C语言)冒泡排序
一、运行结果; 二、源代码; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//实现buble_sort函数; void buble_sort(int arr[], int sz) {//初始化变量值;int i 0;//嵌套循环冒泡排序;//外层循环&…...

怎么样的布局是符合可制造性的PCB布局?
满足可制造性、可装配性、可维修性要求,方便调试的时候于检测和返修,能够方便的拆卸器件: 1)极性器件的方向不要超过2种,最好都进行统一方向等要求,如图1-1所示; 图1-1 极性器件方向统一摆放 2…...
第28关 k8s监控实战之Prometheus(九)
------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。早期我们经常用邮箱接收报警邮件,但是报警不及时,而且目前各云平台对邮件发送限制还比较严格,所以目前在生产中用得更为多的是基于webhook来转发报警内容到企…...
安全防御之可信计算技术
可信计算技术是一种计算机安全体系结构,旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。它通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段,确保计算机系统在各种攻击和威胁下保持高度安全和保密性。 一、可信计算基…...

FPGA引脚物理电平(内部资源,Select IO)-认知2
引脚电平 The SelectIO pins can be configured to various I/O standards, both single-ended and differential. • Single-ended I/O standards (e.g., LVCMOS, LVTTL, HSTL, PCI, and SSTL) • Differential I/O standards (e.g., LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, and…...

PBR材质纹理下载
03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接: http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介:最大的纹理网站之一&#x…...

mac PyCharm 使用conda环境
1 使用conda创建虚拟环境 conda create -n test6 python3.9 -y conda activate test62 选择conda环境 本地 选择已经存在的conda环境 右下角会显示现在的环境。...
10个常用的正则表达式
1 电话号码 let r1 /^1[3-9]\d{9}$/g console.log(r1.exec(18596932371)) 2 qq号 let r2 /^[1-9][0-9]{4,9}$/g console.log(r2.exec(123456)) 3 十六进制的方式表示颜色 let r3 /^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/g // # 可能可有可无,如果不需要#&a…...
对一手游的自定义 luajit 字节码的研究
对一手游的自定义 luajit 字节码的研究 前言 最近闲下来之后无聊研究起了一个unity手游 大量使用了 lua (或者说就是 lua 写的 ) 看到网上已有的一些针对方案 都觉得太不方便 于是深入研究了一下 他自定义的 luajit 情况研究 首先 这是一个 unity的 传…...

1125. 牛的旅行 (Floyd算法,最短路)
1125. 牛的旅行 - AcWing题库 农民John的农场里有很多牧区,有的路径连接一些特定的牧区。 一片所有连通的牧区称为一个牧场。 但是就目前而言,你能看到至少有两个牧区不连通。 现在,John想在农场里添加一条路径(注意ÿ…...
oracle “Interested Transaction List”(ITL)的概念
“Interested Transaction List”(ITL)的概念。让我们逐点理解: 块头和ITL: 每个数据库段块的块头都包含一个Interested Transaction List(ITL)。ITL用于确定数据库开始修改块时某个事务是否未提交。 ITL的…...

kali下-MSF-ftp_login模块破解FTP账号及密码
一、环境准备 两台设备在同一个网络内 一台kali系统:192.168.10.128 一台winserver2016:192.168.10.132 二、MSF介绍 metasploit 全称是The Metasploit Framework,又称MSF,是Kali 内置的一款渗透测试框架,也是全球…...

ELK之Filebeat输出日志格式设置及输出字段过滤和修改
一、Filebeat输出日志格式设置 1.1 编辑vim filebeat.yml文件,修改输出格式设置 # output to console output.console:codec.format: string: %{[@timestamp]} %{[message]}pretty: true### 1.2 测试 执行 ./filebeat -e 可以看到/tmp/access.log(目前文件里只有140.77.188…...

【开源】基于JAVA的河南软件客服系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…...

基于SpringBoot的社区帮扶对象管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...