linux 一些常用的命令-查找文件-正则表达式
一、查找文件命令 - locate find两个命令
locate–简单的文件查找方法
直接使用 locate 文件名 就可以使用
也可以结合grep 来进行过滤,会输出所有匹配的路径
**find —比较复杂的命令 当然也有更强的功能 **
find 命令可以添加很多的测试条件,可以指定要查找的目录
但如果是相对路径,必须让要查找的目录在当前目录下
find playground -type f -name "file-a" | wc
这是一个很典型的应用 要查找的目录是playground
测试条件yon -参数名 参数 来设定
-type d/f 可以设置查找文件或者目录
-name 用来匹配文件名或者目录名
还有很多参数可以设定,这个具体使用的时候可以查
二、正则表达式
正则在编译原理的时候学过原理,但是具体使用确实没怎么用过
Linux 中正则表达式的使用就是用 grep(global regular expression print)
正则重来进行文本的处理,这里学的是posix标准范围内的正则表达式
可以用来查找文件中的对应项
学习正则表达式里面的元字符
- 包括 ^ $ . [ ] { } - ? * + ( ) | \
他们都有各种不同的用法 需要学习一下
-
任意字符
Dot . 它可以用来匹配任意字符,如果把它放到正则表达式里面,他可以用来替代该位置上任何一个字符
grep -h '.zip' dirlist*.txt
这里后面的表示要搜索的文件的范围,也使用了正则表达式
‘.zip’ 这里面的 dot 就是任意字符。比如a.zip b.zip 就可以和.zip进行匹配
-
锚点
^ 和 $ 被视为锚点 分别表示仅当正则表达式出现在行首或者行尾的时候才匹配
grep -h '^zip' dirlist*.txt
grep -h 'zip$' dirlist*.txt
-
方括号选择
方括号表示一个集合,可以包含任意数量的字符,其中出现的元字符回丢失特殊含义,但是两种除外
^用来表示否定 - 用来表示范围
[…]中的可以用来表示可匹配的字符
grep ‘[a-z0-9A-Z]’ bin*.txt
查找以大写字母开头的
grep -h ‘^[A-Z]’ dir*.txt
-
多选结构
echo “AAA” | grep -E ‘aaa|AAA|bbb’
这里 | 符号就表示多选 这个在编译原理里面学的是一样的
()可以用括号来做分隔
(aaa|bbb)ccc 可以匹配 aaaccc 或者bbbccc
可以用这个多选来组成更复杂的正则表达式
在grep 中 -E 是为了提醒要用分隔了 不要把| 符号当作是管道
-
量词
在正则表达式里面,量词比较重要 包括 ? * + {}
他们都跟到一个字符或者一个[]的后面 使用集合或者字符表示匹配字符的数量
? 匹配1或者0
* 匹配0或者无穷个
+ 匹配1或者无穷
{n} 大括号中n表示匹配n个