1.grep命令
作用:直接在文件中搜索你想要的数据
语法:g rep '你想要的内容' yiyuan.txt
演示:找出带My的数据
[root@localhost ~]# grep 'My' yiyuan.txt
My name is yiyuan
My qq is 123345678
My phone is 765433231
[root@localhost ~]# grep -n 'My' yiyuan.txt #-n显示存在该关键字的行号
1:My name is yiyuan
3:My qq is 123345678
5:My phone is 765433231
参数:-i (忽略大小写)
[root@localhost ~]# grep -n -i 'my' yiyuan.txt
1:My name is yiyuan
3:my qq is 123345678
5:My phone is 76543323
[root@localhost ~]# grep -n -i 'my' ./*
./yiyuan.txt:1:My name is yiyuan
./yiyuan.txt:3:my qq is 123345678
./yiyuan.txt:5:My phone is 765433231
利用grep找出nginx软件,配置文件中,定义的网站监听端口号
gerp -n -i 'listen' /etc/nginx/nginx.conf
2.管道符
1.管道符和grep结合是最多的
管道符,在linux中的表达符号是 |
演示:找出用户yiyuan的信息
/etc/passwd是系统的用户信息存放文件
[root@localhost ~]# useradd yiyuan
###不用管道符查找
[root@localhost ~]# grep 'yiyuan' /etc/passwd
yiyuan:x:1000:1000::/home/yiyuan:/bin/bash
###用管道符查找
[root@localhost ~]# cat /etc/passwd |grep 'yiyuan'
yiyuan:x:1000:1000::/home/yiyuan:/bin/bash
[root@localhost ~]#
2.管道符常见用法
检查进程
ps -ef #-显示所有的进程信息 #格式化显示出进程的id号,等其他信息
找出nginx的进程
ps -ef | grep 'nginx'
3.检查端口
netstat -tunlp #/这个组合参数,是查看系统上,所有的端口信息
过滤出关于22端口号的信息
[root@localhost opt]# netstat -tunlp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1102/sshd
tcp6 0 0 :::22 :::* LISTEN 1102/sshd
过滤出机器上,和ssh远程连接的端口信息,提示程序名叫sshd
[root@localhost opt]# netstat -tunlp | grep -n 'sshd'
3:tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1102/sshd
5:tcp6 0 0 :::22 :::* LISTEN 1102/sshd
###listen:你查到了该端口,表示该端口监听中,等待用户连接中
4.统计文件数量
统计系统/var/log目录下有多少个log文件
先找出/var/log/下所有的log文件,find是递归搜索,找出所有的log后缀文件,不放过一个
[root@localhost opt]# find /var/log -name '*.log' | wc -l
###wc -l可以统计文件内的文本行数(文件内的数据,替换为)
5.判断出系统中一共有多少个txt文件
[root@localhost opt]# find / -name '*.txt' | wc -l
181
6.统计系统用户数量
[root@localhost opt]# cat /etc/passwd | wc -l
20
3.xargs
简单来说,就是把其他命令给它的数据,传递给它后面的命令作为参数
语法
命令1 | xargs 选项
选项
-i 用 {} 代替传递的数据
1.批量备份:
###先创建十个文件
[root@localhost tmp]# touch {1..10}.log
[root@localhost tmp]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 3 01:13 10.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 1.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 2.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 3.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 4.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 5.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 6.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 7.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 8.log
-rw-r--r--. 1 root root 0 Oct 3 01:13 9.log
[root@localhost tmp]# find /tmp/ -name '*.log' | xargs -i cp {} {}.bak
[root@localhost tmp]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 3 01:13 10.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 10.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 1.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 1.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 2.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 2.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 3.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 3.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 4.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 4.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 5.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 5.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 6.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 6.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 7.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 7.log.bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 8.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 8.log. bak
-rw-r--r--. 1 root root 0 Oct 3 01:13 9.log
-rw-r--r--. 1 root root 0 Oct 3 01:28 9.log.bak
2.批量重命名:
-rw-r--r--. 1 root root 0 Oct 3 01:55 10.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 1.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 2.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 3.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 4.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 5.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 6.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 7.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 8.txt.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 9.txt.log
[root@localhost tmp]# ls | xargs -i rename txt.log log {} ###语法:rename 源字符串 新字符串 文件对象
[root@localhost tmp]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 3 01:55 10.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 1.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 2.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 3.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 4.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 5.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 6.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 7.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 8.log
-rw-r--r--. 1 root root 0 Oct 3 01:55 9.log
3.全系统搜索,哪一个txt文件包含了' 一原 '这个密码
[root@localhost tmp]# find / -name '*.txt' | xargs -i grep '一原' {}
一原
找出具体的位置
[root@localhost tmp]# find / -type f -name '*.txt' | xargs -i grep -l '一原' {}
/var/log/mima.txt
4.-exec和-ok的用法
你的需求:找出所有的txt文件,再交给其他的linux命令加工
find命令,提供了-exec选项,完成一样的效果
-exec跟着shell命令,结尾必须以;分号结束,考虑系统差异,加上转义字符\;
{ } 作用是替代find查阅到的结果
{ } 前后得有空格
1.找到系统中的txt文件并删除
[root@localhost ~]# find . -name '*.txt' |xargs -i rm -f {}
-exec
[root@localhost ~]# find . -name '*.txt' -exec rm {} \;
-ok ###和-exec作用一样,但是要确认才能删除
[root@localhost ~]# find . -name '*.txt' -ok rm {} \;
< rm ... ./1.txt > ? y
< rm ... ./2.txt > ? y
< rm ... ./3.txt > ? y
< rm ... ./4.txt > ? y
< rm ... ./5.txt > ? y
< rm ... ./6.txt > ? y
< rm ... ./7.txt > ? y
< rm ... ./8.txt > ? y
< rm ... ./9.txt > ? y
< rm ... ./10.txt > ? y
2.删除系统中超过十天的日志
[root@localhost ~]# find /var/log/ -name '*.log' -mtime +10 -exec rm {} \;
3.-size 根据文件大小查 #10M 正好10M# #+10M 超过10M# #-10M 小于10M#
删除超过10M大小的文件
[root@localhost ~]# find / -name '*.log' -size +10M
5.时间查找
[root@localhost ~]# touch -d "2023-10-1" -m 网站日志.log
[root@localhost ~]# find . -name "网站日志.log" -mtime +2
./网站日志.log
###
[root@localhost ~]# stat 网站日志.log
File: ‘网站日志.log’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 33575038 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-10-05 17:21:26.334157746 +0800
Modify: 2023-10-01 00:00:00.000000000 +0800
Change: 2023-10-05 17:21:26.334157746 +0800
Birth: -
标签:01,grep,log,--,Oct,rw,root,find,符与
From: https://blog.51cto.com/u_15561030/7716187