Liunx基础命令 - find命令

news2025/2/21 21:59:25

find命令 – 根据路径和条件搜索指定文件

find命令的功能是用于根据给定的路径和条件查找相关文件或目录,参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统运维人员日常工作必须掌握的命令之一。

find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、which、locate……等的有条件或部分文件的搜索。对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,会相对消耗较多的系统资源。

语法格式:find [路径] [条件] 文件名

常用参数

-name匹配文件名
-perm匹配文件权限
-user匹配文件所属主
-group匹配文件所属组
-mtime匹配最后修改文件内容时间
-atime匹配最后读取文件内容时间
-ctime匹配最后修改文件属性时间
-nouser匹配无所属主的文件
-nogroup匹配无所属组的文件
-newer匹配比指定文件更新的文件
-type匹配文件类型
-size匹配文件大小
-prune不搜索指定目录
-exec …… {};进一步处理搜索结果

操作示例

在这里插入图片描述

find -name a命令的意思是在当前目录及其子目录中查找文件名为a的文件,并将它们输出。其中,-name参数指定查找的文件名,可以使用通配符匹配多个文件。

find -name 'a*'命令的意思是在当前目录及其子目录中查找文件名以字母’a’开头的文件,并将它们输出。其中,-name参数指定查找的文件名,通配符*表示匹配0个或多个字符。

find -name 'a*'命令为什么要在a*上加引号???

Linux命令行中的通配符(wildcard)可以用来匹配文件名或目录名,以便更方便地搜索和操作文件。其中,*表示匹配任意多个字符,包括0个字符。而在Linux命令中,命令参数如果带有空格或特殊字符等,会被解释器当作多个参数处理,因此需要使用引号将其整体引起来,避免解释器解释错误。

因此,在find -name 'a*'命令中,'a*'被引号括起来,是为了防止解释器将其拆分成多个参数。这样在搜索文件时可以正确地匹配所有文件名以字母a开头的文件,且保证命令解析正确。

在这里插入图片描述

? 匹配任意一个字符

在这里插入图片描述

[]匹配任意一个中括号内的字符

在Linux find命令中,星号(*)、问号(?)和中括号([])都是通配符,用于匹配文件名。

  • 星号(*):匹配任意数量的字符。例如,*.txt可以匹配所有以.txt结尾的文件。
  • 问号(?):匹配单个字符。例如,a?b可以匹配所有的3个字符长的字符串,第一个和第三个字符为ab,而中间的字符可以是任何单一的字符。
  • 中括号([]):用于指定字符集合,匹配方括号内列出的任意一个字符。例如,[abc]可以匹配abc中的任意一个字符;[0-9]则可以匹配任意一个数字字符。

它们的主要区别在于匹配的范围和粒度不同:

  • 星号(*)匹配的是任意数量的字符,包括0个或多个,是最广泛的匹配方式;
  • 问号(?)则只匹配一个字符,是比较精确的匹配方式;
  • 中括号([])用于指定字符集合,在给定的字符中进行匹配,是介于两者之间的匹配方式。

因此,在使用find命令时,需要根据实际情况选择合适的通配符来进行文件名匹配。可以根据需要组合使用这些通配符来实现更精确的匹配。

按时间查询

在这里插入图片描述

在Linux find命令中,可以使用-mtime选项以修改时间为条件查询文件。其中,-mtime +n表示查找修改时间在n天之前的文件,-mtime n表示查找修改时间恰好为n天前的文件,-mtime -n表示查找修改时间在n天之内的文件(包括当天)。

因此,具体到本题中,+2表示修改时间在2天之前的文件,即查找至少2天前修改过的文件;2表示修改时间恰好为2天前的文件;-2表示修改时间在2天内的文件,即查找最近2天内修改过的文件。

在这里插入图片描述

在Linux find命令中,除了可以使用-mtime选项以修改时间为条件查询文件外,还可以使用-atime-ctime选项以访问时间和状态更改时间为条件查询文件。

其中,-atime n表示查找最近n天内被访问过的文件,-ctime n表示查找最近n天内状态更改过的文件。这些选项也可以通过添加+-来表示时间范围。

按大小查询

在这里插入图片描述

find -size 2k表示在当前目录下查找大小为2KB的文件,并将这些文件列出来。在find命令中,-size选项用于按照文件大小进行查询,2k指定要查找的文件大小为2KB。

需要注意的是,在文件大小计量单位中,k表示千字节(KB)的意思,因此2k就表示2KB。此外,还可以使用其他后缀来表示不同的计量单位,如c表示字节数,M表示兆字节(MB),G表示千兆字节(GB)等。

这个查询出来的不太精确

复合查询

在这里插入图片描述

复合查询指在 find 命令中可以同时使用多个选项对文件进行多条件查询的方式。常见的复合查询包括按文件名、大小、类型、时间等条件组合进行查找。

在复合查询的命令中就会出现并且,或者,除非的关系

find 命令中,我们可以使用 -a 选项表示“并且”,使用 -o 选项表示“或者”,使用 ! 表示“除非”。

find /etc -size +20k -a -size -50k 其作用是在 /etc 目录下查找文件大小大于 20KB 且小于 50KB 的文件。

具体解释如下:

  • find:表示查找命令。
  • /etc:查找的目录是 /etc,即从 /etc 目录开始往下查找符合条件的文件。
  • -size +20k:指定文件大小大于 20KB,其中 + 表示大于,20k 表示 20KB,这里的大小指的是文件占用的磁盘空间。
  • -a:表示多个查询条件通过逻辑“与”连接,即查询的文件必须同时满足两个条件,即大小大于 20KB 和小于 50KB。
  • -size -50k:指定文件大小小于 50KB,其中 - 表示小于,50k 表示 50KB,这里的大小指的是文件占用的磁盘空间。

find与grep的区别

findgrep 是常用的 Linux 命令,它们有一些相似之处,但也有一些本质的不同。

  • find 命令用于在指定目录中查找符合条件的文件,并可以执行相关的操作。可以使用多个查询条件对结果进行筛选,并且可以递归搜索子目录,支持使用逻辑运算符组合查询条件。例如,我们可以使用 find /path/to/search -name "*.txt" 命令查找 /path/to/search 目录下所有后缀名为 .txt 的文件。find 命令的返回结果是文件路径列表,不会显示文件内容。
  • grep 命令用于在指定文本文件中查找匹配的字符串,或者从标准输入流(即终端输入)读取数据并查找匹配的字符串。可以使用正则表达式进行匹配,并会输出匹配到的行。例如,我们可以使用 grep "hello" file.txt 命令在 file.txt 文件中查找包含 hello 字符串的行,并输出这些行。grep 命令的返回结果是包含匹配的文件行,不会显示其他非匹配的信息。
    综上所述,findgrep 命令的主要区别在于,find 主要用于查找文件,grep 主要用于查找文本内容。find 用于文件路径的搜索,返回文件路径列表,而 grep 用于文本内容匹配,返回包含匹配的文件行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跟小枫社长学建站

该文章为看视频时的一些笔记,完整版可以看小枫社长的视频 小枫社长视频原址 一、租云服务器 腾讯云阿里云 阿里云对控制台进行了全面升级,在首页使用了新的设计方案,云服务器ECS位置如下,点击左上角目录即可。 二、创建实例 云…

牛客网面试必刷:BM22 比较版本号

牛客网面试必刷:BM22 比较版本号 前言一、解法1:分割截取 前言 牛客项目发布项目版本时会有版本号,比如1.02.11,2.14.4等等 现在给你2个版本号version1和version2,请你比较他们的大小 版本号是由修订号组成&#xf…

三十三、微服务,SpringCloud架构

1、微服务架构 1.1 单体应用架构 将项目所有模块(功能)打成jar或者war,然后部署一个进程 优点: 1:部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可。 2:技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。…

JAVA8的新特性——Stream

JAVA8的新特性——Stream 在这个深夜写下这篇笔记,窗外很安静,耳机里是《季节更替》,我感触还不是很多,当我选择封面图片的时候才发现我们已经渐渐远去,我们都已经奔赴生活,都在拼命想着去换一个活法&#…

Kubernetes 二进制部署高可用集群

概述 在私有局域网内完成Kubernetes二进制高可用集群的部署 ETCD Openssl > ca 证书 Haproxy Keepalived Kubernetes 主机规划 序号名字功能VMNET 1备注 1备注 2备注 3 备注 4备注 50orgin界面192.168.164.10haproxykeepalived1reporsitory仓库192.168.164.16yum 仓库re…

哈工大C语言大作业-学生成绩管理系统

哈工大C语言大作业-学生成绩管理系统 完整项目地址:https://github.com/944613709/Student-Performance-Management-System-ByC 说明 l 设计了学生成绩管理系统,来实现对于学生数据的录入统计等各个功能l 进入主菜单之前执行音效播放l menu主菜单中显…

C语言基础知识:C语言中的控制语句

目录 1. 条件判断语句 if(…) {…} if(…) {…} else {…} if(…) {…} else if(…) {…} … else if(…) {…} else {…} switch() {case …: …; case …: …; … default: …;} 2、循环语句 while语句 do while语句 for语句 3、循环体中的跳转语句 break语句。 c…

consul集群部署-linux

一.前言 1. Consul架构 consul是分布式、高可用的系统,下图是单数据中心的部署架构 2. Consul特性 服务发现:解决在分布式环境中,如何找到可用的服务地址的问题,支持通过DNS和HTTP查询服务地址。健康检查:定时监控服务…

如何正确学习网络安全(黑客)?看到就是赚到!

一、前言 本人10 年工作经验, 擅长 Web 安全攻防、渗透领域, 在金融领域的安全有丰富的实战经验。从事在线教育 3 年多培养学员过万,讲解清晰透彻,课程干货内容多,辅导学员耐心细致 那我们该如何正确学习网络安全&am…

[学习笔记] [机器学习] 5. 逻辑回归(逻辑回归、混淆矩阵、分类评估指标、ROC曲线、AUC指标、类别不均衡问题)

视频链接数据集下载地址:无需下载 本文学习目标: 知道逻辑回归的损失函数、优化方法知道逻辑回归的应用场景应用LogisticRegression实现逻辑回归预测知道精确率、召回率等指标的区别知道如何解决样本不均衡情况下的评估会绘制ROC曲线图形 1. 逻辑回归…

Linux——Linux的基本指令

作者:几冬雪来 时间:2023年5月15日 内容:Linux基本指令讲解 目录 前言: 1. 什么是操作系统: 2.Linux操作系统: 3.Linux程序: 4.Linux基本指令: 1.ls: 作用&a…

Java基础 关键字与标识符

关键字(keyword) 定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(或单词) 这些单词已经被 Java 定义好 了。 特点:全部关键字都是小写字母。 关键字比较多,不需要死记硬背,学到哪里记到哪里即可。官方地址 1. 关键字一共 50 个&…

linux bonding 技术

文章目录 背景简介目录1. Bonding驱动简介1.1 配置并编译支持bonding的内核1.2 安装ifenslave控制工具 2. Bonding驱动选项3. 配置Bonding设备3.1 使用Sysconfig配置3.1.1 利用Sysconfig使用DHCP3.1.2 利用Sysconfig配置多个Bonds 3.2 使用Initscripts配置3.2.1 利用Initscript…

Linux篇3

Shell常用命令 0. Shell介绍1. 帮助命令1.0 help:获取内置命令帮助信息1.1 man:获取帮助信息 2. 文件目录相关2.1 pwd:打印当前工作目录的绝对路径2.2 cd:切换工作目录2.3 ls:列出目录内容2.4 mkdir:创建空…

Java小游戏之贪吃蛇

文章目录 一:窗口的绘制1.1 定义窗口类——SnakeGame1.2 设置窗口的参数1.3 启动main方法 二:窗口网格的绘制2.1 重写paint方法2.1.1 为什么要重写paint方法2.1.2 实现方式 2.2 Graphics2.3 设置网格线的参数 三:游戏物体父类的创建——Snake…

Swagger之集成与用法

简介 Swagger 是一个规范且完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务&#xff1b; 作用 1.接口的文档在线生成 2.功能测试 SpringBoot集成Swagger 1.创建一个普通的SpringBoot项目&#xff0c;支持web应用 2.pom中加入Maven依赖 <depe…

K8S的的就绪探针readinessProbe 和存活探针livenessProbe

就绪探针&#xff1a;readinessProbe 什么是readinessProbe readinessProbe&#xff1a; 当Pod需要开始接收流量时&#xff0c;“kubelet” 将定期检查 readinessProbe&#xff0c;如果该probe处于成功状态&#xff0c;则容器视为就绪&#xff0c;并将 Pod 标记为已就绪状态。…

栈的基本操作详细介绍 看了就会!!!

文章目录 栈的介绍栈的概念栈的结构 栈的实现&#xff08;动态数组实现&#xff09;初始化栈入栈出栈获取栈顶元素判断栈是否为空获取栈中有效元素的个数销毁栈 栈的介绍 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进…

机器学习期末复习 决策树相关

决策树基本原理&#xff1a;基于信息增益、增益率与基尼系数的划分选择&#xff0c;预剪枝与后剪枝&#xff0c;多变量决策树以及决策树优缺点概述 如何避免决策树过拟合&#xff1f; 预剪枝和后剪枝 预剪枝&#xff1a; 1.生成结点&#xff0c;根据信息增益选出最优划分属…

玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架

一、前言 上一篇我们分析了gtest的一些内部实现&#xff0c;总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C单元测试框架&#xff1a;nancytest &#xff0c;通过编写这个简单的测试框架&#xff0c;将有助于我们理解gtest。 二、整体设计 使用最精简的设计…