管道符与grep与find
  jnZtF7Co41Wg 2023年11月02日 44 0

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: -

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月07日   28   0   0 数据乐观锁redis
  jnZtF7Co41Wg   2023年12月09日   28   0   0 客户端服务端数据