Linux-find查找

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

awk

sed

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     - 与正则表达式的区别是不需要转义        
posted @ 2020-04-22 21:45  佛祖让我来巡山  阅读(668)  评论(0编辑  收藏  举报

佛祖让我来巡山博客站 - 创建于 2018-08-15

开发工程师个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

Bootstrap中文网