find
1 是linux里面的一个实时查找工具,通过制定路径完成文件查找
2 find [options] ..... [查找路径] [查找条件] [处理动作]
3 查找路径:查找的位置,默认是当前文件夹
4 查找条件:制定查找的标准,文件名、大小、类型、日期等等
5 处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上
查找条件
1 - 根据文件名查找
2 - -name 指定名称,可以使用正则
3 - -iname 忽略大小写
4 - -links n 引用次数为n的文件
5 - -regex 后面跟完整路径,而不是文件名, 必须整个路径完全匹配
6
7 - 制定搜索的层级
8 - -maxdepth level 最大的搜索深度,指定的目录为第1层
9 - -mindepth level 最小的搜索深度,包括level层
10
11 - 根据属主、属组来查找
12 - -user username 查找属主为username的文件
13 - -group groupname 查找属组为groupname的文件
14 - -uid id 查找属主为id的文件
15 - -gid id 查找属组为id的文件
16 - -nouser 查找没有属主的文件
17 - -nogroup 查找没有属组的文件
18
19 - 根据文件类型 -type
20 - d 目录
21 - f 文件
22 - l 符号链接
23 - s 套接字
24 - b 块设备
25 - c 字符设备
26 - p 管道文件
27
28 - 空文件或者空目录
29 - -empty
30
31 - 条件
32 - 与 -a
33 - 或 -o
34 - 非 -not
35
36 - 摩根定律
37 - 非(A或者B) 非A 且非B
38 - 非(A且B)非A或非B
39
40 - 排除目录
41 - -path "目录" -prune
42 #例子:
43 #排除一个目录
44 [root@localhost test]#find /etc -path "/etc/sane.d" -prune -o -name "*.conf"
45 #排除两个目录
46 [root@localhost test]#find /etc \(-path "/etc/sane.d" -o -path "/etc/cups" \) -prune -o -name "*.conf"
47
48 - ```
49 [root@localhost test]#find /etc -name *_config
50 /etc/ssh/ssh_config
51 /etc/ssh/sshd_config
52 [root@localhost test]#find /etc -path /etc/ssh -name *_config
53 ```
54
55 - 按照大小来查找
56 - -size # (#-1,#] 不包括#-1,包括#
57 - -size -# [0,#-1] 包括#-1
58 - -size +# (#,......)
59
60 - 按照时间来查找
61 - -atime # [#,#+1)
62 - -atime -# (0,#)
63 - -atime +# [#+1,....]
64 - 查找7天以后的文件 find -atime +7
65 - -mtime
66 - -ctime
67 - 以分钟为单位
68 - -amin
69 - -mmin
70 - -cmin
处理动作
1 - -print 默认的处理动作,显示在屏幕上
2 - -ls 类似于ls -l 显示长格式
3 - -delete 删除查找到的文件
4 - -fls file 将查找的结果以长格式保存到文件中
5 - -ok command {} \; 对每一个查找到的文件执行command命令,在执行命令之前要先提示用户是否要执行
6 - -exec command {} \; 对查到的每一个文件执行command命令,不需要确认,一次性交给后面命令处理
xargs
1 - 有的命令不支持管道
2 - 命令参数过长
3 - xargs 将管道前面的内容一条一条的交给后面命令处理
4 - 一般会跟find使用
linux三贱客
grep
1 grep [option] "模式" file
2
3 option
4
5 ```
6 --color=auto 对匹配到的行添加颜色
7 -v 取反
8 -i 不区分大小写
9 -n 查找的内容增加行号
10 -c 打印匹配到的行数
11 -o 只显示匹配到的文字
12 -q 静默模式
13 -A # after 向下显示#行
14 -B # before 向上显示#行
15 —C # context 上下分别显示#行
16 -e 或者 grep -e 'user' -e 'root' passwd
17 -E 扩展正则表达式
18 -F 不使用正则表达式
19 -r 递归
20 -w 匹配整个单词
21 ```
正则表达式元字符
1 - 字符匹配
2 - . 任意单个字符
3 - [] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]
4 - [^] 取反
5 - [:upper:] 大写字母
6 - [:lower:] 小写字母
7 - [:alnum:] 字母和数字
8 - [:alpha:] 大小写字母
9 - [:digit:] 数字
10 - [:black:] 空白
11 - [:punct:] 标点符号
12
13 - 匹配次数
14 - * 表示任意次数
15 - .* 任意字符任意次数
16 - \? 表示0或者1次
17 - \+ 至少一次
18 - \{n\} 表示n次
19 - \{m,n\} 最少m次,最多n次
20 - \{n,\} 至少n次
21 - \{,n\} 至多n次
22
23 - 位置锚定
24 - ^ 开头
25 - $结尾
26 - ^$ 空行
27
28 ```
29 grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 显示不以#开头并且不是空行
30 ```
31
32 - 分组
33 ```SHELL
34 grep "\(c\|C\)at" a
35 ```
36
37 - 向后引用
38 - \1 前面第一个括号出现的内容匹配完成之后再后面在出现一次
39 - \2
40 - 扩展正则表达式
41 - 与正则表达式的区别是不需要转义