当前位置: 首页 > news >正文

Linux中find命令详解

记录linux中find命令的详细用法。

文章目录

  • find命令简介
  • 基本语法
  • 常用选项
    • -name
    • -iname
    • -type
    • -size
    • -mtime,-atime,-ctime
    • -perm
    • -user
    • -group
    • -delete
    • -exec
    • -print
    • and or
  • find --help

find命令简介

find 是一个搜索目录树以查找一个文件或一组文件的程序。它遍历目录树并报告与用户规范匹配的文件出现的所有实例。

简单说,就是find是一个遍历指定目录,找出符合你设定规则的一个文件或一组文件并输出。

基本语法

find [路径] [选项] [条件] [操作]

路径:要搜索的目录路径。如果未指定路径,默认为当前目录。
选项:主要控制查找行为和输出格式。
条件:定义查找标准,可以是文件名称、类型、大小等。
操作:对找到的文件执行的操作(如删除、打印等)。

常用选项

-name

-name :按名称查找,支持通配符。

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

查找所有扩展名为 .txt 的文件。

-iname

-iname :按名称查找,支持通配符, 大小写不敏感。

find /path/to/search -iname "*.jpg"

-type

-type :按文件类型查找。

f:普通文件
d:目录

find /path/to/search -type d

查找所有目录。
不加-type默认搜索文件

-size

-size:按文件大小查找。

find /path/to/search -size +100M

查找大于 100MB 的文件。
+ 表示大于,- 表示小于,c、k、M、G 分别表示字节、千字节、兆字节和吉字节。

大小的表示方式:
n:表示字节(默认单位)。
k:表示千字节(1K = 1024字节)。
M:表示兆字节(1M = 1024K)。
G:表示吉字节(1G = 1024M)。

大小比较符号:
+n:大于 n(例如,+10M 表示大于 10MB)。
-n:小于 n(例如,-100k 表示小于 100KB)。
n:等于 n(例如,100M 表示等于 100MB)。
示例
查找大于 100MB 的文件:

find /path/to/search -size +100M

查找小于 1KB 的文件:

find /path/to/search -size -1k

查找大小为 500字节的文件:

find /path/to/search -size 500c

注意,c 代表字节。

查找大于 2GB 的文件:

find /path/to/search -size +2G

结合其他条件使用:
查找大于 10MB 的文件并打印它们的名称:

find /path/to/search -type f -size +10M -print
find /path/to/search -type f -name "*.txt"
find /path/to/search -type d -iname "a.*"

注意事项
-size 只比较实际的文件大小,不包括文件系统的元数据或空洞文件(比如稀疏文件)。
不同文件系统的实际表示方式可能会影响到文件大小的计算,特别是在使用符号链接和文件系统的不同格式时。

-mtime,-atime,-ctime

-mtime:按文件修改时间查找。单位为天数,如-7为过去7天内。

find /path/to/search -mtime -7

查找过去 7 天内修改过的文件。
时间属性主要包括文件的访问时间(atime)、修改时间(mtime)和改变时间(ctime)。以下是一些常用的时间相关选项及其用法:

常用的时间选项
-mtime
描述:查找修改时间在指定天数范围内的文件。
用法:

find /path/to/search -mtime n

参数说明:
n:确定天数。例如,-1 表示过去 1 天,+1 表示超过 1 天,1 表示正好 1 天。
示例:

find /path/to/search -mtime -7

查找过去 7 天内修改的文件。
-atime

描述:查找访问时间在指定天数范围内的文件。
用法:

find /path/to/search -atime n

示例:

find /path/to/search -atime +30

查找 30 天前最后访问过的文件。
-ctime

描述:查找状态改变时间(如文件权限、属性等)在指定天数范围内的文件。
用法:

find /path/to/search -ctime n

示例:

find /path/to/search -ctime -5

查找过去 5 天内状态改变过的文件。
-newer

描述:查找比指定文件新(或旧)的文件。
用法:

find /path/to/search -newer file

示例:

find /path/to/search -newer reference_file

查找所有比 reference_file 新的文件。
组合使用时间选项
可以将时间选项与其他选项结合使用。例如,查找过去 7 天内被访问的 .txt 文件:

find /path/to/search -type f -atime -7 -name "*.txt"

时间单位
请注意,-atime、-mtime 和 -ctime 的单位是“天”,文件的时间以 24 小时为单位进行计算。这意味着如果文件在某一特定的日期被访问、修改或状态改变,没有考虑到时间段的细节,只是按天数来计算。

-perm

-perm:按文件权限查找。

find /path/to/search -perm 644

-user

-user:按文件属主查找。

find /path/to/search -user username

-group

-group:按文件用户组查找。

find /path/to/search -group groupname

操作
打印文件路径(默认操作):

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

-delete

删除文件:

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

查找并删除所有扩展名为 .tmp 的文件。

-exec

执行命令:
使用 -exec 可以对找到的文件执行命令。

find /path/to/search -name "*.log" -exec rm {} \;

查找并删除所有扩展名为 .log 的文件。
在 find 命令中,-exec 选项允许你对找到的每一个文件执行特定的命令。这是 find 的一个非常强大的功能,因为它可以使你在查找文件的同时对这些文件执行操作。

用法

find [路径] [条件] -exec [命令] {} \;

路径:要进行搜索的目录路径。
条件:用于查找文件的条件(例如,-type, -name, -size 等)。
命令:要执行的命令。使用 {} 来占位找到的每个文件。
\;:表示命令结束。必须使用反斜杠 \ 来转义分号,以避免被 shell 解释。
示例
删除找到的所有 .tmp 文件:

find /path/to/search -type f -name "*.tmp" -exec rm {} \;

这个命令将在指定路径下查找所有扩展名为 .tmp 的普通文件,并将它们删除。

修改权限:
查找所有普通文件并将其权限设置为 644:

find /path/to/search -type f -exec chmod 644 {} \;

拷贝文件:
查找并拷贝所有 .jpg 文件到另一个目录:

find /path/to/search -type f -name "*.jpg" -exec cp {} /path/to/destination/ \;

使用 -exec 执行多个命令:
可以通过 -exec 多次调用命令,或者使用+来合并多个文件作为参数:

find /path/to/search -type f -name "*.log" -exec ls -lh {} + 

在这个示例中,ls -lh 将应用于所有找到的 .log 文件,并且会批量执行(这样更高效)而不是逐个执行。

在这里插入图片描述
在这里插入图片描述

注意事项
使用 -exec 时,命令的输出将直接在终端显示。
由于执行的命令是通过 shell 直接调用的,所以要小心命令的输入,避免导致安全问题(如代码注入)。
-exec 是一种强大的工具,但在执行 rm 等危险命令时,请务必小心,确保你确实要删除的文件。
总结
-exec 是 find 命令中的一个极其有用的选项,能够使用户在查找文件的同时执行复杂的操作。结合其他选项,-exec 可以灵活地用于各种文件管理任务

-print

使用 -print 显示文件(虽然是默认操作,但可以与其他条件结合使用):

find /path/to/search -type f -print

组合条件
可以使用 -and 和 -or 组合条件:

find /path/to/search -type f -size +1M -or -name "*.jpg"

查找所有大于 1MB 的文件或扩展名为 .jpg 的文件。

举例
查找当前目录及其子目录中所有 .txt 文件:

find . -name "*.txt"

查找 /var/log 目录下最近 10 天被修改的文件:

find /var/log -mtime -10

查找 /home 目录中大于 50MB 的文件并删除:

find /home -type f -size +50M -delete

在 /tmp 目录下查找文件树结构,并输出所有 .bak 文件的路径:

find /tmp -name "*.bak" -print

查找所有用户 user1 拥有的文件,并将权限修改为 644:

find / -user user1 -exec chmod 644 {} \;

and or

在 find 命令中,逻辑运算符 -and 和 -or 用于组合多个条件,以便更精确地进行文件查找。这使得用户可以创建复杂的查询条件来满足特定需求。

使用 -and 和 -or
默认情况下,find 命令中的条件是与关系(-and)。如果你需要明确表示与关系,可以使用 -and。而使用 -or 则表示或关系。

语法

find [路径] [条件1] -and [条件2] ... 

或者

find [路径] [条件1] -or [条件2] ...

示例
使用 -and 来查找普通文件,且文件名以 .txt 结尾:

find /path/to/search -type f -and -name "*.txt"

这个命令会查找 路径 下的所有普通文件,并且文件名以 .txt 结尾。

使用 -or 来查找普通文件,文件名以 .jpg 或以 .png 结尾:

find /path/to/search -type f \( -name "*.jpg" -or -name "*.png" \)

这里使用了括号 ( 和 ) 来明确分组条件,以求减少混淆。这个命令会查找路径下所有文件名以 .jpg 或 .png 结尾的文件。

查找在过去 7 天内被修改的或文件大小超过 10MB 的文件:

find /path/to/search \( -mtime -7 -or -size +10M \)

结合 -and 和 -or 使用以查找特定条件:
查找所有 .log 或 .txt 文件,并且是普通文件:

find /path/to/search -type f \( -name "*.log" -or -name "*.txt" \)

注意事项
括号的使用:在使用逻辑运算符时,推荐使用括号 ( 和 ) 来明确条件的优先级。需要使用反斜杠 \ 来转义括号,以避免被 shell 解释。
默认与关系:在没有使用 -and 和 -or 的情况下,条件默认是 -and 的逻辑关系。
结合其他条件
你可以将 -and 和 -or 与其他条件(如 -type、-name、-mtime 等)结合使用,使查找更加灵活。例如:

find /path/to/search -type f \( -name "*.jpg" -or -name "*.png" \) -and -size +5M

这个命令会查找所有大于 5MB 的文件,且文件扩展名为 .jpg 或 .png。

总结
使用 -and 和 -or 能够灵活地根据多个条件进行文件查找,使 find 命令变得更加强大和多样化。

find --help

find-help

Usage: find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression]default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:
operators (decreasing precedence; -and is implicit where no others are given):( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2
positional options (always true): -daystart -follow -regextypenormal options (always true, specified before other expressions):-depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf--version -xdev -ignore_readdir_race -noignore_readdir_race
tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME-ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE-nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN-readable -writable -executable-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N-used N -user NAME -xtype [bcdpfls]      -context CONTEXTactions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;Valid arguments for -D:
exec, opt, rates, search, stat, time, tree, all, help
Use '-D help' for a description of the options, or see find(1)

相关文章:

Linux中find命令详解

记录linux中find命令的详细用法。 文章目录 find命令简介基本语法常用选项-name-iname-type-size-mtime,-atime,-ctime-perm-user-group-delete-exec-printand or find --help find命令简介 find 是一个搜索目录树以查找一个文件或一组文件的程序。它遍历目录树并报告与用户规…...

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗?今天小编就给大家推荐十个高清无水印视频素材下载的网站,如果你也是苦于下载高清无水印的短视频素材,赶紧来看看吧~ 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…...

SpringBoot+Activiti7工作流入门实例

目录 文章目录 目录准备Activiti建模工具1、BPMN-js在线设计器1.1 安装1.2 使用说明1.3运行截图2、IDEA安装Activiti Designer插件2.1安装插件2.2 设置编码格式防止中文乱码2.3 截图简单工作流入门实例1. 新建Spring Boot工程2. 引入Activiti相关依赖添加版本属性指定仓库添加依…...

Azure OpenAI检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用

定制是关键! 生成式人工智能对企业最有影响力的应用之一是创建自然语言界面,这些界面经过定制,可以使用特定领域和用例数据来提供更好、更准确的响应。这意味着回答有关特定领域的问题,例如银行、法律和医疗领域。 我们经常谈…...

ISP Pipeline

系列文章目录 文章目录 系列文章目录前言一、RAW域二、RGB域三、YUV域总结 前言 一、RAW域 黑电平校正(BLC)数字增益调整(DGain)自动白平衡(AWB)局部色调映射(LTM)坏点修复&#xf…...

< IDE编程环境配置>

IDE编程环境配置 LIB,DLL区别 我们在写项目时会链接(调用)第3方库,或者比如在vs的解决方案solution创建项目project时,不仅可以开发可执行程序exe(可单独运行)(windows/控制台 应用…...

Golang | Leetcode Golang题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; func findDisappearedNumbers(nums []int) (ans []int) {n : len(nums)for _, v : range nums {v (v - 1) % nnums[v] n}for i, v : range nums {if v < n {ans append(ans, i1)}}return }...

【Spring Boot 入门三】Spring Boot与数据库集成 - 构建数据驱动的应用

一、引言 在之前的文章中&#xff0c;我们已经对Spring Boot有了初步的认识&#xff0c;了解了如何构建第一个Spring Boot应用&#xff0c;以及如何通过配置文件来掌控应用的设置。这些知识为我们进一步探索Spring Boot与数据库的集成奠定了坚实的基础。 数据库是现代应用的核…...

Web 服务器与动态脚本语言通信的接口协议有哪些

Web 服务器与动态脚本语言通信的接口协议主要有以下几种&#xff1a; 一、FastCGI&#xff08;Fast Common Gateway Interface&#xff09; 特点&#xff1a;使用持久进程处理请求&#xff0c;减少了进程启动和关闭的开销&#xff0c;提高了性能和可扩展性。多个请求可由同一个…...

ESXI识别服务器磁盘,虚拟机显示无效

ESXI识别服务器磁盘&#xff0c;虚拟机显示无效 系统意外断电识别不到磁盘的情况下可以管理-》硬件-》搜索磁盘名称&#xff0c;选择切换直通&#xff0c;则虚拟机正常。...

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有&#xff1a;1. 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下&#xff0c;g编译器对迭代器失效的检测并不是非常…...

【Spring基础3】- Spring的入门程序

目录 3-1 Spring的下载3-2 Spring的 jar 包3-3 第一个 Spring程序第一步&#xff1a;添加spring context的依赖&#xff0c;pom.xml配置如下第二步&#xff1a;添加junit依赖第三步&#xff1a;定义bean&#xff1a;User第四步&#xff1a;编写spring的配置文件&#xff1a;bea…...

golang学习笔记22-面向对象(四):接口【重要】

本节也是GO核心部分&#xff0c;很重要。 注&#xff1a;由于导包语句已经在19讲&#xff08;笔记19&#xff1a;面向对象的引入&#xff09;展示过了&#xff0c;所以这里就不展示了。 一、定义与实现 (1)接口中可以定义一组方法&#xff0c;但不需要实现&#xff0c;不需要…...

SpringBoot技术栈:打造下一代网上租赁系统

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

Vue-Lecture1-Notes

渐进式框架 Vue 被称为“渐进式框架”&#xff0c;是因为它允许开发者根据项目的需求逐步引入和使用其功能&#xff0c;而不需要一次性使用整个框架。简单来说&#xff0c;Vue 提供了从简单到复杂的功能层次&#xff0c;可以灵活选择使用。 按需使用&#xff1a;Vue 的核心功能…...

网上租赁系统开发:SpringBoot实践与应用

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

User-Agent在WebMagic爬虫中的重要性

对于需要从网站上抓取数据的开发者来说&#xff0c;WebMagic是一个强大的工具。它是一个简单灵活的Java爬虫框架&#xff0c;用于抓取网页数据。在爬虫技术中&#xff0c;User-Agent&#xff08;用户代理&#xff09;是一个关键的HTTP请求头&#xff0c;它告诉服务器关于客户端…...

如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法

一、介绍 MCR(Miscrosoft Container Registry) 加速器&#xff0c;助你在中国大陆急速下载 netcore 相关的 docker 镜像。二、解决办法。     1、如何使用       至少三种方法进行加速&#xff1a;         使用 docker-mcr &#xff08;推荐&#xff09;  …...

网络编程,端口号,网络字节序,udp

前面一篇我们讲了网络的基础&#xff0c;网络协议栈是什么样的&#xff0c;数据如何流动传输的&#xff1b;接下来这篇&#xff0c;我们将进行实践操作&#xff0c;真正的让数据跨网络进行传输&#xff1b; 1.网络编程储备知识 1.1 初步认识网络编程 首先我们需要知道我们的…...

Android入门

下载Android studio&#xff0c;创建第一个项目 模板可以选择empty views Activity 在这个界面可以修改&#xff0c;使用语言&#xff0c;项目名字&#xff0c;存储路径以及适用版本 完成后&#xff0c;得到一个最初始的Android 项目&#xff0c;红色标记的两个文件&#xf…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

从零手写Java版本的LSM Tree (一):LSM Tree 概述

&#x1f525; 推荐一个高质量的Java LSM Tree开源项目&#xff01; https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree&#xff0c;专为高并发写入场景设计。 核心亮点&#xff1a; ⚡ 极致性能&#xff1a;写入速度超…...

Ray框架:分布式AI训练与调参实践

Ray框架&#xff1a;分布式AI训练与调参实践 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 Ray框架&#xff1a;分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...