(转)find:根据指定条件查找文件

find:根据指定条件查找文件

find 是一个资深的 UNIX® 工具。它的功能在于递归扫描一个或多个目录,从中查找匹配指定条件的文件。尽管此工具非常有用,但语法却十分复杂,使用的时候也需要多多练习。最普通的语法是这样的:

find [选项] [目录] [条件] [动作]

如果您不指定任何目录,find 将会查找当前目录。如果您不指定条件,则条件相当于“true”,这样会把全部文件都找出来。选项、条件和动作的设置十分繁多,我们在这里只会提到其中的少数几个。首先,让我们来看看着几个选项:

  • -xdev:不在其它文件系统的目录中搜索。

  • -mindepth <n>:搜索文件时至少要深入到指定目录的第 n 层子目录。

  • -maxdepth <n>:搜索文件时最多深入到指定目录的第 n 层子目录。

  • -follow:如果符号链接到目录,则跟随符号链接进入。默认情况下,find 不跟随链接。

  • -daystart:当使用与事件相关的测试时(见下文),将当天的开始时间作为时间戳,而不是默认值(从当前时间倒退24个小时)。

条件可以是一个或多个原子测试。这是一些有用的测试:

  • -type <文件类型>:搜索给定类型的文件。文件类型可以是以下之一:f(普通文件)、d(目录)、l(符号链接)、s(套接字)、b(块模式文件)、c(字符模式文件)或p(命名管道)。

  • -name <模式>:查找文件名与给定模式匹配的文件。使用此选项,模式将被看作shell 全局模式(参见“Shell 通配符”一节)。

  • -iname <模式>:与 -name 类似,但不区分大小写。

  • -atime <n>、-amin <n>:查找上次访问时间在 n 天前(-atime)或 n 分钟前(-amin) 的文件。您还可以指定 <+n> 或 <-n>,这代表要搜索访问时间在至多或者至少 n 天/分钟前的文件。

  • -anewer <文件>:查找上次访问时间晚于文件的文件。

  • -ctime <n>、-cmin <n>、-cnewer <file>:与 -atime、-amin 和 -anewer 相同,但比较的是文件上次修改的时间。

  • -regex <模式>:与 -name 相同,但模式将被看作正则表达式。

  • -iregex <pattern>:与 -regex 相同,但不区分大小写。

可供选择的设置还有很多,请参看 find(1) 中的详情。要进行组合测试,您可以使用以下格式之一:

  • <c1> -a <c2>:如果 c1 和 c2 都为 true,则结果为 true;-a 是隐含的,也就是说如果您想要同时测试 c1、c2 和 c3 三个条件,只需输入<c1> <c2> <c3>。

  • <c1> -o <c2>:如果 c1 或 c2 中至少有一个是 true,则结果为 true。请注意 -o 的优先级低于 -a,因此如果您想要匹配满足条件 c1 或 c2,且满足 c3 的文件,您就需要使用括号,即( <c1> -o <c2> ) -a <c3>。您还必须对括号进行转码,否则括号将被 shell 加以解释!

  • -not <c1>:测试 c1 的相反结果,因此如果 c1 是 false 的话,-not <c1> 就是 true。

最后,您可以为找到的文件指定一个动作。最常用的有:

  • -print:仅仅将每个文件的名称打印在标准输出。这是默认动作。

  • -ls:对每个找到的文件以 ls -ilds 的格式打印在标准输出上。

  • -exec <命令行>:对每个找到的文件依次执行命令行。命令行必须以分号(;)结尾,您还必须对其进行转码,以防 shell 对其进行解释;文件位置以 {} 进行标记。请参看用法的例子。

  • -ok <命令>:与 -exec 相同,但对每个命令都请求用户确认。

要理解这些选项和参数最好的方法是执行一些例子。现在,您想要在 /usr/share 目录中查找全部目录,只需输入:

find /usr/share -type d

假设您有 HTTP 服务器,而您所有的 HTML 文件都存在 /var/www/html,该目录也是您的当前目录。您想要查找一个月来没有编辑过的全部文件。由于您拥有来自不同作者的页面,所以有些文件的扩展名是 html,有些文件的扩展名是htm。您想要将这些文件链接在目录 /var/www/obsolete 中。您应该输入[17]:

find \( -name "*.htm" -o -name "*.html" \) -a -ctime -30 \
-exec ln {} /var/www/obsolete \;

这个例子看起来有点复杂,我们会进行详细解释。这里所用的条件是:

\( -name "*.htm" -o -name "*.html" \) -a -ctime -30

它所完成的功能正是我们想要的:它会找到文件名以 .htm 或 .html“\( -name "*.htm" -o -name "*.html" \)” 结尾的文件,而且(-a) 在最近的三十天内没有修改过,这大概是一个月(-ctime -30)。请额外注意括号:这里的括号时必需的,因为 -a 的优先级较高。如果没有括号的话,将会找到所有以 .htm 结尾的文件,以及所有一个月以来没有修改过且以 .html 结尾的文件。这显然不是我们所需要的结果。您还应该注意括号需要在 shell 中加以转码:如果我们写的是 ( .. ),而不是 \( .. \),那么 shell 就会对括号进行解释,并且试图在子 shell 中执行 -name "*.htm" -o -name "*.html"……另外一种解决方案是将括号放在双引号或单引号中,但是我们更愿意在此使用反斜线,因为这里只有一个字符。

最后,还要对每个文件执行这个命令:

-exec ln {} /var/www/obsolete \;

这里,您仍然需要对分号(;)进行转码,否则 shell 会将其解释为命令分隔符。如果您忘记了进行转码,find 将会抱怨说 -exec 缺少一个参数。

最后一个例子:您有一个非常大的目录(/shared/images),其中包含各种图像。通常,您会使用 touch 命令更新此目录中名为 stamp 的文件的时间,这样您就会有一个可参考的时间。您想要找到比 stamp 文件新的所有 JPEG 图像,但是您的图像来源各不相同,文件扩展名有 jpg、jpeg、JPG 以及 JPEG。您还想要不在 old 目录中搜索。不仅如此,您还想要将此文件列表发送给您,而您的用户名是 li_si:

find /shared/images -cnewer     \
     /shared/images/stamp       \
     -a -iregex ".*\.jpe?g"     \
     -a -not -regex ".*/old/.*" \
       | mail li_si -s "New images"

当然,如果您每次都要重复输入的话,这个命令确实没什么用。您可能会想要定时执行该命令。要定时运行命令,最简单的方法就是使用下一节介绍的 cron 守护程序。


 

手把手教你用.NET Reactor 7.3.0保护跨平台.NET应用(含macOS/Rider配置) 本文详细介绍了如何使用.NET Reactor 7.3.0为跨平台.NET应用提供代码保护。文章重点涵盖了在macOS环境下的GUI工具安装、与JetBrains Rider的深度集成配置,并针对Avalonia UI框架提供了专项保护策略和避坑指南,帮助开发者有效防止代码被反编译和破解。 阅读详情

相关推荐

RADIOML 2018.01A数据集在自动调制识别中的实战应用指南

本文提供了RADIOML 2018.01A数据集在自动调制识别(AMR)任务中的完整实战指南。内容涵盖从数据集介绍、数据获取与解包、高效预处理流程,到构建PyTorch数据管道、模型设计(如1D CNN、ResNet)以及训练调参策略。重点阐述了如何利用该数据集训练鲁棒的AI模型,以应对复杂信道环境和低信噪比挑战,并给出了详细的性能评估方法。

plant的博客 173

# find之mtime、ctime、atime、daystart用法示例

find之mtime、ctime、atime、daystart用法示例

超级无敌棒棒糖 1328

【前端】【面试】【业务场景】前端如何获取并生成设备唯一标识

问题:前端如何获取并生成设备唯一标识?核心要点:浏览器原生信息有限,但通过组合多个维度可生成设备指纹(Device Fingerprint),用于唯一标识设备。常见方式浏览器信息(User-Agent)屏幕与系统参数本地存储标识(localStorage / cookie)第三方指纹库(如 FingerprintJS)方式优点缺点手动组合指纹实现简单不稳定,识别率低持久化强容易被用户清除识别率高、稳定性好依赖第三方库IP 地址识别网络识别粗略共享网络环境下重复可能大。

qq_59344127的博客 1794

linux筛选命令不换行,linux命令(find中-a,-o,not的用法)

sudo find /etc -size +1M -exec echo {} \;#在/etc目录下找文件大小在1M以上的文件并且显示,文件用换行符隔开。sudo find /etc -size +1M | xargs echo#达到-exec相同的功能但是用空格分开寻找到的文件。#-exec后面的{} \;是不能少的。find 紧跟的是指定开始寻找的绝对路径,我取当前路径。find ./ -us...

weixin_42332497的博客 937

Fabric学习笔记(一)- Centos 7下的Fabric 2.3.2环境搭建

一、 环境准备 (一)、在VMware Workstation 15 安装一个Centos 7的虚拟环境,切换到图形化界面: 参考文章链接:Centos 7切换图形化界面 其中可能在yum groupinstall "X Window System"时会报错:Cannot find a valid baseurl for repo: base/7/x86_6,参考这篇文章即可:安装图形化界面报错解决 (二)、打开终端,安装所需的库: 切换root用户,输入命令:su root yum更新,输入命令:y

茕夜 2611

Comsol 弧形声学换能器声聚焦仿真

1. 弧度和曲率半径:弧形声学换能器的形状和曲率半径对声聚焦效果有重要影响。通常,较小的曲率半径和较大的弧度可以实现更强的声聚焦效果。弧形声学换能器声聚焦是指将声波能量集中在弧形声学换能器的特定区域内,以实现更强的声场强度和分辨率。4. 数值仿真和优化:使用声学仿真软件进行数值仿真可以帮助设计和优化弧形声学换能器的声聚焦效果。通过调整几何参数、材料特性和激励信号等参数,可以模拟和优化声聚焦效果。2. 激励信号:通过调整激励信号的频率和幅值,可以实现声波在弧形声学换能器中的聚焦效果。

声学黑洞仿真工作室 1617

linux命令(find中-a,-o,not的用法)

sudo find /etc -size +1M -exec echo {} \; #在/etc目录下找文件大小在1M以上的文件并且显示,文件用换行符隔开。 sudo find /etc -size +1M | xargs echo #达到-exec相同的功能但是用空格分开寻找到的文件。 #-exec后面的{} \;是不能少的。 find 紧跟的是指定开始寻找的绝对路径,我取当前路径。 find

liuhuiyan_2014的专栏 1万+

Python爬虫实战:从巨潮网批量抓取上市公司年报JSON数据

网络爬虫作为自动化数据采集的核心技术,其原理是通过模拟浏览器行为向服务器发送HTTP请求并解析响应,从而高效获取结构化信息。在金融数据分析领域,这项技术价值尤为突出,能够将研究人员从繁琐的手工数据收集中解放出来,聚焦于更高阶的模型构建与价值挖掘。典型的应用场景包括上市公司财务研究、市场趋势分析和风险预警系统开发。本文以Python的requests库为核心工具,详细解析如何通过分析巨潮资讯网的JSON数据接口,构建一个稳定、高效的上市公司年报数据采集管道,并重点探讨了接口逆向、分页爬取、PDF文件下载等关键

weixin_42529366的博客 1236

find命令的几个例子解析(-a,-o,-path,-wholename,-prnue,-print)

晚上群里有人讨论起find命令,为find命令的-o,-a困扰,相当混乱的感觉,特整理了一下。 首先得要提几点find命令的基本知识点,以此为基础进行find命令解析 一:find的基本模式和默认规则 find的基本模式是 find [path] [express] /*man find最上边的命令格式 */ path可以省略,默认是当前目录, express又区分为options(选项)+tests(条件)+actions(动作),express可以逻辑复合 express

星晨大海 8677

2026 AI Agent Harness Engineering 生态报告:开源工具链的现状与未来趋势

IEEE P2863-2025《通用人工智能自主代理技术架构与评估规范》于2025年11月正式发布,将AI Agent(通用人工智能自主代理)定义为:一种具备感知(Perception)、记忆(Memory)、推理(Reasoning)、规划(Planning)、行动(Action)五大核心能力闭环,能够在无显式指令覆盖全部环节的前提下,自主完成特定领域或开放领域复杂任务的智能实体。

AI 算法实战派 497

7、PPG信号处理与质量评估

本文详细介绍了PPG信号的处理与质量评估方法,包括信号滤波技术(如卷积和互相关)、滤波器选择、信号质量指标(SQI)的定义与应用,以及标注一致性的评估。同时,提供了MATLAB代码示例和操作步骤,并分析了不同指标的优势与适用场景,旨在提高PPG信号在诊断和监测中的准确性与可靠性。

salt的博客 254

bat批量编译demo

::find /r 目录名 %变量名 in (匹配模式1,匹配模式2) do 命令 rem 如果保存为bat运行就是%%i而不是%i ::for /r . %i in (*.thrift) do @echo %i for /r . %%i in (*.thrift) do @echo %%i for /r . %%j in (*.thrift) do @thrift -gen java %%j

云守护的专栏 1214

sim800c插卡后指示灯还是一秒一闪无法接收发送短信,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1167

Linux命令之查找文件find

`find` 命令可以在目录层次结构中搜索符合指定条件的文件或目录,并且可以它们执行指定的操作。而搜索条件可以是文件权限、文件类型、日期、大小等。

二木成林 3万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux 命令之 find:查找文件

温馨提示:本教程的 GitHub 地址为「linux-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。 在 Linux 命令中,find用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,其支持按名称查找、按正则表达式查找、按文件大小查找、按文件权限查找等多种查询方式。如果在使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将

安正勋的博客 19万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

find :根据给定条件进行查找文件

find :指定路径下查找文件 find [options] [起始路径] [查找条件] [处理动作] [起始路径]:指定具体路径,否则默认为当前路径 [查找条件]:指查找标准,大小,文件名,类型,权限等,否则会查找目标路径下的所有文件 [处理动作]:需要对符合查找条件的文件做出的动作 -print:默认动作,输出到标准输出 -fls /file.. :将查到的文件长格式信息写入到指定文件

chunlin 1391

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

u013007181的博客 5955

linux 查找文件及根据条件搜索文件内容

linux 查找搜索文件及文件内容搜索文件1.使用 find 命令Linux find命令可以用不同的搜索标准如名字、类型、所属人、大小等来搜索目录树。基本语法如下:参数说明实例2.使用locate命令Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。基本语法如下:参数说明实例附加说明3.使用slocate命令Linux slocate命令查找文件或目录。slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。语法如下:

陈家老二的博客 1万+

Linux命令——6 find & 7 locate查找文件

如果需要进行复杂的条件查找,或者需要确保查找结果最新,使用find。如果需要快速查找文件,并且对文件的最新状态要求不高,使用locate。

Nancywiner的博客 2170

linux中如何使用find命令查找文件

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。 下面介绍一些关于使用find命令查找文件的命令格式和示例: 1.格式: find +目录 +条件 +条件值 如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件, 并且将查找到的子目录和文件全部进行显示,如图,在/root下的子目录和文件全部显示出来(截取部分):

Hguan07的博客 9万+

find:根据指定条件查找文件

find 是一个资深的 UNIX® 工具。它的功能在于递归扫描一个或多个目录,从中查找匹配指定条件的文件。尽管此工具非常有用,但语法却十分复杂,使用的时候也需要多多练习。最普通的语法是这样的: find [选项] [目录] [条件] [动作] 如果您不指定任何目录,find 将会查找当前目录。如果您不指定条件,则条件相当于“true”,这样会把全部文件都找

职场里拉开差距的不是知识,而是认知! 1680

find和grep查找文件

find是一种强大的工具,可以在指定的目录树中查找文件和目录。它可以基于多种条件进行筛选,如文件名、用户、文件大小等。

weixin_44719499的博客 1757

linux下使用find xargs grep查找文件及文件内容

linux下使用find xargs grep查找文件及文件内容博客分类: LINUXUbuntu 1,在某个路径下查文件。在/etc下查找“*.log”的文件find /etc -name “*.log”2,扩展,列出某个路径下所有文件,包括子目录。find /etc -name “*”3,在某个路径下查找所有包含“hello abcserver”字符串的文件。find /etc -name “...

baidu_20876831的博客 6547

Linux如何用find命令查找文件

用途 find命令用于在指定目录下查找文件。 全称 无 参数 -name :后跟需要匹配的文件名模式,需要使用引号引起来 下面是一些简单的示例查找:(~表示$HOME目录) 1.查找当前$HOME下’.log’结尾的文件 find ~ –name “*.log” –print 2.当前目录与子目录下查找所有’.log’结尾的文件 find . –name “*.log” –print 3.当前目录与子目录下查找文件名以一个大写字母开头的文件 find . –name “[A-Z]” –print 4.在/e

linux_tcpdump的博客 2万+

Ubuntu查找文件

一、参考资料 在ubuntu中搜索文件或文件夹的方法 Ubuntu 常用查找文件与文件内容指令 具体方法 whereis+文件名 用于程序名的搜索,搜索结果只限于二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。 find / -name +文件名 find是在指定的目录下遍历查找,如果目录使用 / 则表示在所有目录下查找,find方式查找文件消耗资源比较大,速度也慢一点。 格式 含义 find -name filename 在根目录中

IT菜鸟 5万+

linux根据条件查找文件、根据文件内容查找文件

find 搜索文件或目录 find [命令选项] [路径] [表达式选项] 选项: -empty :查找空白文件或目录。 -group :按组查找。 -name :按文档名称查找。 -iname :按文档名称查找,且不区分大小写。 -mtime :按修改时间查找。 -size :按容量大小查找。 -type :按文档类型查找,文件(f)、目录(d)、设备(b,c),链接(l)等。 -user :按用户查找。 -exec :对找到的档案执行特定的命令。 -a :并且。 -o :或者。

秃了也弱了 9631
上一篇: (转)论 LOAD 与 IMPORT 中的 codepage 转换
下一篇: (转)grep Programs and Regular expressions
mlxia
博客等级 码龄26年 28粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值