shell 命令之 find命令二
来源:互联网 发布:欢乐牛牛源码 编辑:程序博客网 时间:2024/06/13 14:58
linux find 命令二 史上最详细
前言:前面说到,-path 是匹配路径的 ,同样的-regex 和-path功能相同,只是以正则表达式为条件进行匹配。 话虽如此,实际用起来还是有几个点要注意一下的。
正则表达式在文本匹配方面有很强大的功能,find命令同时支持正则,使用正则表达式需要使用-regex ,参数具体如下
find . -regex ".*\(\.txt\|\.pdf \)$"/* 这个命令和上面的命令功能相同,看到这里是不是很疑惑?首先"\(\.txt\|\.pdf \)$"这个很好理解,我们不再多说,这个就表示以.txt或者.pdf结尾。那么为什么前面还有".*"呢??1. 虽然-regex表示可以使用正则表达式进行条件匹配,但是-regex 跟普通的find 命令有点区别,"find . \( -name "*.txt" -o -name "*.pdf" \)" 表示根据文件名进行查找,而-regex表示根据文件的路径,进行模式匹配!!!2. 再看看这个命令 find . 表示在.路径下查找,那么想想.下的所有文件它的全路径名是不是以.开始?? 比如.路径下有文件 first.txt ,second.pdf那么这些文件的全路径是不是./first.txt ./second.pdf? 问题又来了?那么照这么说,那*就可以匹配./first等等,.txt或者.pdf前面的任意字符了,为什么还有.呢?此外在正则中.是有特殊含义的,.表示匹配任意一个字符,从这个意义上讲完全说不通啊,那么我们想是不是代表要查找的路径啊,因为刚刚执行的是 find .啊??3, 我们执行的是find . 表示在当前路径下查找,那么我们做个测试,在~下新建a文件夹,我们把first.txt second.pdf 放在a下面,然后我们cd ~进入~进行查找:~$:find a/ -regex "a*\.txt" 照之前的理解那是不是也应该有结果啊事实上并没有,但是我们改一下: find a/ -regex ".*\.txt",结果有了输出:a/first.txt这是为什么呢? 留给聪明的你!*/
总结如下,执行find命令时注意以下两点:
1. -regex 表示连路径一起匹配,并不是单纯的只匹配文件名
2. 使用的技巧,正则表达式应以.*开头,然后后跟要表达的条件的正则表达式。 如下
find . -regex ".*\(\.txt\|\.pdf \)$"/* \(\.txt\|\.pdf \)$ 是不是就表示以.txt或.pdf结尾? 然后前面加上.* 专注于逻辑的正则编写,加上.**/
0 0
- shell 命令之 find命令二
- shell之find命令
- shell之find命令
- shell命令之find
- 8 shell命令之find
- linux shell命令之find命令
- shell 命令之 find 命令一
- shell 命令之 find 命令三
- shell 命令之 find 命令四
- Linux之常用Shell命令:grep,find
- 【Linux】shell命令学习之find
- Hbase 之shell命令(二)
- shell脚本 find命令
- shell笔记--find命令
- shell 命令 笔记--find
- shell的find命令
- Linux shell命令---------find
- Shell命令 find
- java学习笔记-理解java语言的跨平台
- pat advanced 1107
- python decorator
- WebX实践指南_WebX RPC(四)
- 使用SharedPreferences存储数据
- shell 命令之 find命令二
- Java编写Struts2案例--【用户登录】
- 聚类算法(二):DBSCAN算法
- Xcode乱套了怎么恢复默认设置?
- thinkphp3.2 验证码生成和点击刷新验证码示例
- 依赖倒置、控制反转和依赖注入辨析
- 谈谈业务逻辑中灰度功能的实现
- fedora21客户端登录centos7服务器创建ssh无密码
- mysql_jdbc连接说明