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

理解find命令

find命令使用通配符,而不是正则表达式

对于如下两个命令

find ./ -name *txtfind ./ -name \*txt 这两个命令之间的区别在于 shell 对通配符字符 * 的解释和展开方式不同。

find ./ -name *txt:在这个命令中,shell 在将命令传递给 find 之前执行通配符展开。*txt 被视为通配符模式,shell 会尝试匹配当前目录中以 “txt” 结尾的文件或目录。如果有匹配该模式的文件或目录,shell 在执行 find 命令之前会将它们替换。因此,传递给 find 的命令可能会因当前目录中匹配的文件或目录而有所不同。

find ./ -name \*txt:在这个命令中,反斜杠 \ 被用作转义字符,防止 shell 展开通配符。*txt 被原样传递给 find 命令。find 命令本身执行模式匹配,在当前目录(以及子目录)中查找以 “txt” 结尾的文件或目录。

为了更清楚地理解区别,我们来看一个示例情况:

假设当前目录中包含以下文件:file1.txt、file2.txt 和 file.txt。

对于 find ./ -name *txt,shell 在执行 find 命令之前,会将 *txt 展开为 file1.txt 和 file2.txt(匹配当前目录中的文件)。因此,实际执行的命令变为 find ./ -name file1.txt file2.txt。find 命令搜索名为 file1.txt 和 file2.txt 的文件。

对于 find ./ -name \*txt,由于使用了反斜杠 \ 作为转义字符,shell 不会展开通配符。传递给 find 的命令是 find ./ -name *txt。find 命令自身执行搜索,匹配当前目录(以及子目录)中以 “txt” 结尾的任何文件。因此,它会搜索 file1.txt、file2.txt 和 file.txt。

为了避免不一致和确保可预测的行为,通常建议在处理通配符模式或正则表达式时使用引号或转义字符,以防止意外的 shell 展开。

如可以使用find ./ -name “*txt”避免这种情况

http://www.lryc.cn/news/66590.html

相关文章:

  • OpenCV教程——调整图像亮度与对比度,绘制形状和文字
  • Python模块篇:函数/类/变量和常量/注释/导入和使用
  • Java反射和动态代理
  • [NOIP2004 提高组] 津津的储蓄计划(思路+代码详解)Python实现
  • 分布式搜索引擎es 面试突击
  • 社会心理学的六个经典实验
  • Java 单例模式详解
  • AI读心重磅突破登Nature!大脑信号1秒被看穿,还能预测未来画面
  • 【SAP Abap】X-DOC:SNRO - ABAP流水号应用
  • 基于AT89C51单片机的交通灯设计与仿真
  • MySQL系列三(定位慢SQL、SQL优化与索引优化)Using filesort
  • 免费使用GPT-4.0?【AI聊天 | GPT4教学】 —— 微软 New Bing GPT4 申请与使用保姆级教程
  • 渲染对电脑伤害大吗_如何减少渲染伤机?
  • 非线性最小二乘
  • 23.5.7总结(学习通项目思路)
  • 如何生成api接口获取宝贝商品详情,商品详情接口,产品详情
  • 微服务---Redis实用篇-黑马头条项目-登录功能(短信验证缓存,用户信息缓存)
  • 美国纽扣电池的包装电池盒必须附带警告标签16 CFR 第 1700.20
  • AcWing——方格迷宫(有点不一样的迷宫问题)
  • 《常规脉搏传输时间作为人体血压变化标志》阅读笔记
  • java学习之异常三
  • 生产者向 Kafka 发送消息的执行流程
  • Linux命令·netstat
  • 《心安即是归处》读书笔记
  • C++:使用红黑树封装map和set
  • Go 命令
  • LEO、HW、LSO、LW 分别代表什么?
  • 问题 B: 跳石头(C++)(二分答案)
  • bugku——变量1
  • 网络数据包丢失监控