Linux中find 命令的高级用法 组合条件 与、或、非(-a、-o、!) 以及通过 -regex 和 -iregex 选项使用正则表达式

find 命令详解
find 是 Unix 和类 Unix 操作系统(如 Linux 和 macOS)中一个非常强大的命令行工具,用于在文件系统中搜索文件和目录。find 命令可以根据多种条件(如文件名、类型、大小、修改时间等)进行搜索,并可以执行复杂的操作。

find 【范围】【条件】-exec 处理命令 {} \;    注意{   }\;之间的空格。

-exec 额外操作的开始

{}是用于查找结果的占位符。代表当前找到的文件。

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

\;用于告诉find命令-exec选项到此结束

示例:红框框住的这个才是正确的用法。

红框框住的这个才是正确的用法。在-exec部分,用户将目标路径放在了{}前面,这会导致语法错误。正确的用法应该是将{}放在目标路径前面,例如:-exec mv {} /目标路径

示例:

find /home/user -name "*.txt" -exec rm -f {} \;
find /home/user -name "*.txt" -exec chmod 644 {} \;
find /home/user -name "*.txt" -ok rm {} \;

删除找到的文件

find /path/to/search -name "*.tmp" -delete

-delete:直接删除找到的文件。
示例:

find /home/user -name "*.tmp" -delete

限制搜索深度

find /path/to/search -maxdepth 2 -name "*.txt"

-maxdepth n:限制搜索的最大深度为 n。
-mindepth n:限制搜索的最小深度为 n。
示例:

find /home/user -maxdepth 2 -name "*.txt"
find /home/user -mindepth 1 -name "*.txt"


find 命令的高级用法
除了基本的搜索功能,find 命令还提供了许多高级用法,可以帮助你更精确地控制搜索条件和执行更复杂的操作。以下是一些常见的高级用法:

1. 使用正则表达式
find 命令可以通过 -regex 和 -iregex 选项使用正则表达式来匹配文件名。

-regex:使用正则表达式匹配文件路径。
-iregex:使用正则表达式匹配文件路径,不区分大小写。
示例:

find /path/to/search -regex ".*\.txt$"
find /path/to/search -iregex ".*\.jpg$"


find /    从根目录 / 开始搜索(会遍历整个文件系统)。
-iregex ".*\.txt$"-i:忽略大小写(匹配 .TXT、.Txt 等)。
-regex:使用正则表达式匹配文件名。
.*\.txt$:正则表达式含义:.*:匹配任意字符(包括零个或多个字符)。
\.txt$:以 .txt 结尾($ 表示行尾锚点)。

忽略错误信息
find / -iregex ".*\.txt$" 2>/dev/null 

2>/dev/null:将错误信息(如权限拒绝)重定向到“黑洞”。

/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞” 
2>/dev/null意思就是把错误输出到“黑洞” 。

2. 使用逻辑运算符
find 命令支持逻辑运算符来组合多个条件。

-and:逻辑与(默认)。逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。
-or:逻辑或。逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。
!:逻辑非。逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。

示例:

find /path/to/search -name "*.txt" -and -type f -and -size +10M
find /path/to/search \( -name "*.txt" -or -name "*.log" \)
find /path/to/search ! -name "*.txt"

find / -name "*.txt" -and -type f -and -size +1M

 find / \( -name "*.txt" -or -name "*.log" \)
 


3. 按内容搜索
虽然 find 本身不支持按内容搜索,但可以结合 grep 命令实现这一功能。

示例:

find /path/to/search -type f -exec grep -l "search_string" {} \;


注意事项
性能考虑:find 命令在大型文件系统上可能比较慢,特别是在使用复杂条件时。可以考虑使用 locate 命令作为替代方案,但 locate 需要定期更新数据库。
安全性:在使用 -exec 或 -delete 选项时要特别小心,确保条件正确,以免误删重要文件。
备份:在执行可能影响大量文件的操作之前,建议先备份重要数据。
使用 -print 选项:默认情况下,find 会将找到的文件和目录路径打印到标准输出。如果需要明确指定输出,可以使用 -print 选项。

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

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

相关文章

基于Python的垃圾短信分类

垃圾短信分类 1 垃圾短信分类问题介绍 1.1 垃圾短信 随着移动互联科技的高速发展,信息技术在不断改变着我们的生活,让我们的生活更方便,其中移动通信技术己经在我们生活起到至关重要的作用,与我们每个人人息息相关。短信作为移…

go语言中空结构体

空结构体(struct{}) 普通理解 在结构体中,可以包裹一系列与对象相关的属性,但若该对象没有属性呢?那它就是一个空结构体。 空结构体,和正常的结构体一样,可以接收方法函数。 type Lamp struct{}func (l Lamp) On()…

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测 目录 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预…

大数据学习(80)-数仓分层

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…

flink 写入es的依赖导入问题(踩坑记录)

flink 写入es的依赖导入问题(踩坑记录) ps:可能只是flink低版本才会有这个问题 1. 按照官网的导入方式: 2. 你会在运行sql-client的时候完美得到一个错误: Exception in thread "main" org.apache.flink.table.client.SqlClientEx…

Python 用户账户(创建用户账户)

Web应用程序的核心是让任何用户都能够注册账户并能够使用它,不管用户身处何方。在本章中,你将创建一些表单,让用户能够添加主题和条目,以及编辑既有的 条目。你还将学习Django如何防范对基于表单的网页发起的常见攻击,…

10-BST(二叉树)-建立二叉搜索树,并进行前中后遍历

题目 来源 3540. 二叉搜索树 - AcWing题库 思路 建立二叉搜索树(注意传参时用到了引用,可以直接对root进行修改),同时进行递归遍历;遍历可以分前中后三种写,也可以用标志来代替合在一起。其余详见代码。…

无人机点对点技术要点分析!

一、技术架构 1. 网络拓扑 Ad-hoc网络:无人机动态组建自组织网络,节点自主协商路由,无需依赖地面基站。 混合架构:部分场景结合中心节点(如指挥站)与P2P网络,兼顾集中调度与分布式协同。 2.…

[极客大挑战 2019]Knife——3.20BUUCTF练习day4(2)

[极客大挑战 2019]Knife——3.20BUUCTF练习day4(2) 解题内容 在一个文件中输入以下内容,该文件是phtml文件(HTML嵌套PHP代码,可以绕过很多限制)但在本题中要先改文件名为2.gif然后抓包修改后缀名为phtml,因为只可以上传gif和jpg…

1、环境初始化--Linux安装dockerCE

主要安装环境ubuntu、centos、Windows 因某些原因,使用阿里镜像源: https://developer.aliyun.com/mirror/docker-ce?spma2c6h.13651102.0.0.4a451b11EjxMKe Ubuntu安装步骤&相应解释 sudo apt-get update 解释: 刷新软件源列表 该命…

什么是 BA ?BA怎么样?BA和BI是什么关系?

前几天有朋友在评论区提到了BA这个角色,具体是干什么的,我大概来说一下。 什么是BA BA 英文的全称是Business Analyst,从字面上意思就是商业分析师,做过商业智能BI项目的应该比较了解。实际上以我个人的经验,BA 的角…

第六:go 操作 redis-go

Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。 Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外&am…

UDS诊断、ECU刷写、自动化测试、车联网测试、DTC故障注入测试、坏境测试、可靠性测试、压力测试、性能测试等

每日直播时间:(直播方式:腾讯会议) 周一到周五:20:00-23:00 周六与周日:9:00-17:00 向进腾讯会议学习的,可以关注我并后台留言 直播内容&#xff…

AI大模型介绍

大模型介绍 大模型是指具有大规模参数和复杂计算结构的机器学习模型,通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数 开发大模型不是从0开始,是建立在已有的大模型基座模型上做开发,构建企业知识库(向量数据库…

C++ 异常 【无敌详细版】

1. C语言传统的处理错误的方式 传统的错误处理机制: 1. 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。 2. 返回错误码,缺陷:需要程序员自己去查找对应的错误。…

redis的典型应用 --缓存

Redis最主要的用途,分为三个方面: 1.存储数据(内存数据库) 2.缓存(最常用) 3.消息队列 缓存 (cache) 是计算机中的⼀个经典的概念。核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅&…

初始操作系统---Linux

目录 前言: 硬件层是软件层设计的基石(冯诺依曼体系结构): 冯诺依曼体系结构: 整个系统的运行效率 存储分级的概念 感性的理解数据的流动: 初始操作系统: 本质: 操作系统存在的必要性: 进程(系统里的任务): 操作系统创建进程的方式: 一些内容补充: 系统调用: 小结: 前…

<项目> 主从Reactor模型的高并发服务器

目录 Reactor 概念 分类 单Reactor单线程 单Reactor多线程 多Reactor多线程 项目介绍 项目规划 模块关系 实现 TimerWheel -- 时间轮定时器 定时器系统调用 时间轮设计 通用类型Any Buffer Socket Channel Poller EventLoop(核心) eventfd 设计思路 …

游戏引擎学习第173天

今天的总结和计划 今天我们将继续昨天和前几天的工作,基本上已经完成了字体支持的功能,我们成功地把字体功能加入了游戏中,包括字距调整等基本功能。然而,我觉得整体还没有完全完成,感觉还有一些地方没有完全打理好&a…

Linux安装go环境

安装一个lazydocker,根据文档需要先安装go环境 https://github.com/jesseduffield/lazydocker 官方文档解析 https://go.dev/doc/install 文档内容如下,一共三步 1.删除先前安装的go,解压下载的go压缩包到/usr/local目录 2.添加环境变量&…