【这个命令的 7 种用法!你确定不会用?】

news/2024/5/16 17:52:55/文章来源:https://blog.csdn.net/mengmeng_921/article/details/130746940

在这里插入图片描述
可以很肯定地说,find 命令是 Linux 后台开发人员必须熟知的操作之一,除非您使用的是 Windows Server。

对于技术面试,它也是一个热门话题。让我们看一道真题:

如果你的 Linux 服务器上有一个名为 logs 的目录,如何删除该目录下最后一次访问时间超过一年的日志文件呢?🤔

这种情况很常见,但令人惊讶的是,并非每个开发人员都能在面试中清楚地写出这个命令。

答案:首先我们需要使用 cd 命令进入对应的目录,然后,命令如下:

find . -type f -atime +365 -exec rm -rf {} ;

如果你还没有完全理解上面的命令,完全不用担心。本文将介绍 find 命令的 7 个实际用途,您最终会掌握它。如果您已经知道了,那么阅读这篇文章对您来说将是一个很好的回顾。

按名称或正则表达式查找文件

让我们从最简单的用法开始。要按特定名称搜索文件,命令如下:

find . -name test.txt

如何查找所有格式为 pdf 的书籍?使用正则表达式:

find ./yang/books -name “*.pdf”

默认情况下,find 命令会搜索常规文件,但最好进行指定(-type f)以使所有内容更清晰:

find ./yang/books -type f -name “*.pdf”

查找不同类型的文件

除了搜索常规文件外,我们还可以通过指定 -type 选项来搜索其他类型的文件。另外,搜索公众号后端架构师后台回复“架构整洁”,获取一份惊喜礼包。

例如目录:

find . -type d -name “yang*”

或者符号链接:

find . -type l -name “yang*”

按指定的时间戳查找文件

要按指定的时间戳搜索文件,我们需要知道 Linux 系统中的 3 个不同的时间戳:

访问时间戳(atime):最后一次读取文件的时间。

修改时间戳 (mtime):文件内容最后一次被修改的时间。

更改时间戳 (ctime):上次更改文件元数据的时间(如,所有权、位置、文件类型和权限设置)

所以,正如开头提到的面试题,要搜索 atime 超过一年的文件,我们可以编写如下命令:

find . -type f -atime +365

如果我们需要查找 mtime 正好是 5 天前的文件,请不要包含 +,因为它的意思是“大于”。

find . -type f -mtime 5

显然,+ 表示“大于”,- 表示“小于”。所以我们可以搜索 ctime 在 5~10 天前的文件:

find . -type f -ctime +5 -ctime -10

按大小查找文件

-size选项使我们能够按指定大小查找文件。我们可以将其计量单位指定为以下约定:

b:512 字节块(默认)
c:字节
w:双字节字
k:KB
M:MB
G:GB

类似于按时间戳查找文件,+ 表示“大于”,- 表示“小于”。例如,要查找大小为 10 MB ~ 1 GB 的文件:

find . -type f -size +10M -size -1G

按权限查找文件

合理控制文件的权限是 Linux 管理员的一项重要任务。find 命令的 -perm 选项可以帮助我们按指定权限查找文件:

find . -type f -perm 777

例如,上面的命令会搜索所有具有 777 权限的文件,这意味着一个文件对其持有者、组和所有用户具有所有的读、写和可执行权限。

按所有权查找文件

这个任务很简单。我们可以使用 -user 选项指定用户名。例如,以下命令将查找所有属于 yang 的文件:

find -type f -user yang

在找到文件后执行命令

在大多数情况下,我们希望在找到我们需要的文件后进行后续操作。例如将其删除,或检查它们的详细信息等等。-exec 命令使这些所有事情变得更加容易。

现在,要了解如何使用它,让我们回到之前提到的面试问题:

find . -type f -atime +365 -exec rm -rf {} ;

上述命令在 -exec 选项后是 rm -rf,其用于删除文件。{} 是用于查找结果的占位符。

注意:占位符 {} 非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过 find 命令找到的文件)。

做一个尝试,请在终端上执行以下两个命令,并检查它们的结果有何不同:

一个使用占位符:

find . -type f -atime +5 -exec ls {} ;

另一个不使用:

find . -type f -atime +5 -exec ls ;

-exec 选项后面的命令必须以分号(;)结束。众所周知,转义字符用于去除单个字符的特殊含义。在 Linux 中,反斜杠\用作转义字符。所以我们将它用于分号字符。

总结

看完 find 命令的 7 种用法后,开始提到的面试题现在好像很容易解决了。你现在可以直接写下它的答案并将其解释清楚吗?

find . -type f -atime +365 -exec rm -rf {} ;

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LaTeX详细安装教程|LaTeX 基础知识|LaTeX 常用语法|LaTeX 快速入门

latex安装教程 一、LaTeX 基础知识1.1 LaTeX 的特点1.2 LaTeX 的基本组成部分 二、TeXLive安装包下载三、安装步骤四、TeXstudio安装及简单使用五、快速入门(LaTeX 常用语法)5.1 文本格式5.2 数学公式5.3 LaTeX 支持有序列表和无序列表5.4 图片和表格 La…

unity DoTween动画插件的使用(最全)

DOTween是最常用的动画插件之一,比使用Unity自带脚本写动画,方便很多。 插件获取 untiy商店插件地址 https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676 DOTween商城地址,开发文档 http://dotween.demigiant.com 导入和设置 DOTween首次使…

借助TeeChart 图表控件,这家公司轻松创建了可视化图表看板

TeeChart for .NET是优秀的工业4.0 WinForm图表控件,官方独家授权汉化,集功能全面、性能稳定、价格实惠等优势于一体。TeeChart for .NET 中文版还可让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。技术交流Qqun&#xff1a…

问卷调查类型全面解析

调查问卷是从人们那里收集反馈和意见的强大工具。通过提出结构化问题,研究人员、组织和企业可以获得大量有关如何改进产品或服务、解决问题或做出明智决策的信息。但在设计调查问卷之前,必须首先了解不同的类型以及何时使用它们。 1、结构化问卷 结构化…

C++(2):变量和基本类型

基本内置类型 C定义了一套包括算术类型(arithmetic type)和空类型(void)在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值。 算数类型 算数类型分为两类:整型&#xff0…

浅谈IDC数据中心综合布线第二篇——结构化布线

数据中心网络在当今的业务中扮演着越来越重要的作用,提供数据的存储、管理、共享、交换、应用等功能。在数据中心中,大量的数据在服务器、交换机、存储设备之间通过物理层的光缆(仅讨论光纤布线)进行传输。数据表明,在…

linux swap交换区满了怎么办(已解决)

swap交换区满了怎么办 一、不增加交换区的方法 free -m 或free -h查看占用情况 使用如下指令来查看占用swap的前十进程 for i in $( cd /proc;ls |grep "^[0-9]"|awk $0 >100) ;do awk /Swap:/{aa$2}END{print "$i",a/1024"M"} /proc/$i…

Hadoop 3.0.0的集群搭建和Hive 3.1.3的安装

Hi,朋友们,我们又见面了,这一次我给大家带来的是Hadoop集群搭建及Hive的安装。 说明一下,网上有很多的教程,为什么我还要水? 第一,大多数的安装都是很顺利的,没有疑难解答。 第二&#xff0c…

MySQL数据库---笔记1

MySQL数据库---笔记1 一、数据库概述1.1、什么是数据库1.2、数据库的安装与启动1.3、MySQL数据模型 二、SQL2.1、通用语法及分类2.2、DDL2.2.1、数据库操作 一、数据库概述 1.1、什么是数据库 名称全称简称数据库存储数据的仓库,数据是有组织的进行存储DataBase (…

分享一份适合练手的软件测试实战项目,涵盖金融,电商,银行,商城,家政项目

现如今,越来越多的人涌入到测试行业来了,有自学的,有通过参加培训转行的,不管通过何种方式,他们面临的最主要的问题就是: 1、简历上的项目经验如何去编造? 2、入职的背调、薪资流水、离职证明等…

K8s进阶2——二进制搭建K8s高可用集群

文章目录 一、单master资源清单二、系统初始化三、部署etcd集群3.1 生成etcd证书3.2 部署流程3.2.1 准备二进制安装文件3.2.2 创建工作目录3.2.3 创建etcd配置文件3.2.4 设置成systemd服务3.2.5 添加etcd-2和etcd-3节点3.2.6 所有节点启动etcd并设置开机启动 四、安装容器引擎&…

07-通过RocketMQ和Redis实现用户动态提醒

1、用户动态表 CREATE TABLE `t_user_moments` (`id` bigint(12) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键id,`user_id` bigint(12) DEFAULT NULL COMMENT 用户id,`user_type` int(8) DEFAULT NULL COMMENT 动态类型:0视频 1直播 2专栏动态,`contend_id` bigint(12) D…

六轴传感器基础知识学习:MPU6050特性,四元数,姿态解算,卡尔曼滤波

实际上,只要说到多少轴的传感器一般是就是指加速度传感器(即加速计)、角速度传感器(即陀螺仪)、磁感应传感器(即电子罗盘)。这三类传感器测量的数据在空间坐标系中都可以被分解为X,Y,Z三个方向轴…

YOLOv5【detect.py源码及参数】超详细注释解读!!!建议收藏✨✨!

之前的文章介绍了YOLOv5的网络结构🚀与目录结构源码🚀的详细解读,今天带来的是YOLOv5的 detect.py 代码逐行解读以及注释,废话不多说,让我们一起学习YOLOv5的 detect.py 源码吧! YOLOv5所使用版本&#xf…

Simulink 自动代码生成电机控制:软件在环测试(SIL)步骤总结

目录 前言 模型配置 SIL模型生成 模型仿真对比 总结 前言 电机模型仿真可以叫做模型在环测试(MIL),至于SIL就是软件在环仿真测试,说白了就是验证生成的代码有没有问题,如果有问题那在模型里面修复,不要…

kettle——处理缺失值

目录 一、删除缺失值 1、文本文件输入 2、字段选择 3、过滤记录 4、输出excel文件 5、运行 二、填充缺失值 1、添加文件 2、过滤记录 3、替换NULL值 4、合并记录 5、替换NULL值2 6、字段选择 7、Excel输出 8、运行并查看执行结果 一、删除缺失值 1、文本文件输入…

极客的git常用命令手册

极客的git常用命令手册 1.1 权限配置篇1.1.1 创建ssh key1.1.2 本地存在多个密钥时,如何根据目标平台自动选择用于认证的密钥? 1.2 基础信息配置篇1.2.1 配置用户名1.2.2 配置用户邮箱1.2.3 设置文件名大小写区分1.2.4 设置命令行显示颜色1.2.5 检查git全…

简答题题集

简答题: 1.测试和开发如何配合工作,即测试何时介入测试工作? 测试工作应该覆盖需求分析、概要设计、详细设计、编码等前期阶段,而不应该在系统开发初步完成后才开始。 2.软件测试的对象:正确的依据应该是需求规格说明书…

SpringBoot日志配置(四十七)

当一切被遗忘,那么就回到最初的地方 上一章简单介绍了SpringBoot配置文件敏感信息加密(四十六) , 如果没有看过,请观看上一章 这一章节,我们学习一下日志配置. 参考文章: Spring Boot 日志配置(超详细) 一. 日志配置处理 我们创建一个普通的 SpringB…

终极猜想 |欧科云链研究院揭秘货币未来形态

前言 5月18日,澎湃科技联合欧科云链研究院重磅发布的《从Web3“去美元化”看货币未来形态的终极猜想》文章,通过分析Web3.0“去美元化”的两大路径,对货币未来形态进行了前沿性的猜想。其中,Web3行业盛会Consensus2023&#xff0…