linux find命令与grep命令
find命令
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法格式
find [查找范围] [参数]
参数说明
单独使用的参数
-name : 按照文件的名字去查找
-iname :按照文件的名字取查找(忽略文件名字的大小写)
* :通配符(*file查找以file结尾的,file*查找以file开头的)

-size :按照文件的大小查询文件
+:大于(需要加上大小单位)
-:小于(需要加上大小单位)
没符号:等于(需要加上大小单位)

-mtime : 按照修改时间查询
+(默认):n天以前
- :n天以内
-atime : 按照访问时间查询
+(默认):n天以前
- :n天以内
-ctime : 按照属性修改时间查询
+(默认):n天以前
- :n天以内
-user :按照用户的属主查询
-group:按照用户的属组查询
-type :按照文件的类型查询
d:文件夹
f:普通文件
l:链接文件
s:套接字文件
p:管道文件
b:磁盘文件
c:字符文件
-perm:按照文件的权限查询(必须是权限的数字编号)

-inum:根据index node号码查询

搭配其他参数使用的参数
-a :并且(默认使用,可以省略)
-o: 或者
-maxdepth:查询的目录深度(该参数必须放在第一个参数位)

-exex :将find处理好的结果交给其他命令继续处理
案例: 要求把/etc目录下,所有的普通文件打包压缩到/tmp目录
tar -czPf /tmp/etc.tar.gz `find /etc -type f | xargs`
PS: | : 前面一个命令的结果交给后面一个命令处理
xargs : 把处理的文本变成以空格分割的一行
`` : 提前执行命令,然后将结果交给其他命令来处理
三剑客之grep
Linux grep 命令用于查找文件里符合条件的字符串。
可以看作是一个文本过滤器,格局文本内容过滤文件
语法格式
grep [参数] [匹配规则] [操作对象]
参数说明
-n :过滤文本时,将过滤出来的内容在文件内的行号显示出来
-A:匹配成功之后,将匹配行的后n行显示出来
-B:匹配成功之后,将匹配行的前n行显示出来
-C:匹配成功之后,将匹配行的前后各n行显示出来

-c:只显示匹配成功的行数

-o:只显示匹配成功的内容

-v:反向过滤
-q:静默输出(不显示过滤的内容)
$? : 上一行命令执行的结果,0代表执行成功,其他数字代表执行失败

-i:忽略大小写

-l:匹配成功后,将文本的名称打印出来

-R|-r :递归匹配
-E :使用拓展正则 等价于 egrep
知识拓展
wc:匹配行数
-l:打印匹配的行数
-c :打印匹配的字节数

正则表达式
普通正则表达式
^ : 以某字符开头
$ : 以某字符结尾
. : 匹配除换行符之外的任意单个字符
* :匹配前导字符的任意个数
[] : 某组字符串的任意一个字符
[^] : 取反
[a-z] : 匹配小写字母
[A-Z] : 匹配大写字母
[a-zA-Z] : 匹配字母
[0-9] : 匹配数字
\ : 取消转义
() : 分组
\n : 代表第n个分组
拓展正则
{} :匹配的次数
{n} : 匹配n次
{n,} :至少匹配n次
{n,m} :匹配 n 到 m 次
{,m} :最多匹配m次
+ :匹配至少有一个前导字符
? : 匹配一个或零个前导字符
| :或

浙公网安备 33010602011771号