day10-管道符与grep与find

grep

grep是对数据进行过滤查找关键字

grep作用是,从文件中(而非文件夹)匹配出存在该关键字的那一行信息。

语法 :

grep  参数   '关键字'  文件名

测试数据


I teach linux.

I like python.

My qq is 877348180.

My name is chaoge.

Our school website is http://yuchaoit.cn。

Where is my girl friend.

Who is your boy friend.
My phone number is 15233334444.

1.找出存在My字符的行

-n 参数,显示存在该关键字的行号

grep -n 'root'  /etc/passwd

-i grep忽略大小写

无论大小写,找出/etc/passwd文件中,包含的root信息

grep -i 'root' /etc/passwd 

利用grep找出nginx软件,配置文件中,定义的网站监听端口号

[root@localhost opt]# grep -n -i 'listen'  /etc/nginx/nginx.conf
39:        listen       80;

管道符

管道符,在linux中的表达符号是 

|     (快捷键shift + \)

管道符得标准定义

管道是一种通信机制,通常用于进程间的通信。

它表现出来的形式将==前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)==。

利用grep和管道符,来查看系统用户信息

1.找出chaoge用户的信息
/etc/passwd 是系统的用户信息存放文件
在这个文件中,是用户通过命令创建的用户,id号是从1000开始的,比如
useradd yejinyang
添加完之后,就会在这个文件中生成一行信息

grep 

[root@localhost opt]# id yejinyang
uid=1001(yejinyang) gid=1001(yejinyang) groups=1001(yejinyang)
[root@localhost opt]# 
[root@localhost opt]# grep 'yejinyang'  /etc/passwd
yejinyang:x:1001:1001::/home/yejinyang:/bin/bash 

 管道符

#命令1  | 命令2 

#命令1,拿到用户文件信息   |  交给grep再去过滤

[root@localhost opt]# cat /etc/passwd |  grep 'yejinyang'
yejinyang:x:1001:1001::/home/yejinyang:/bin/bash
[root@localhost opt]# 
[root@localhost opt]# grep 'yejinyang' /etc/passwd

管道符常见用法

检查进程

1.查看系统进程信息的命令

ps  -ef  # -e 显示所有的进程信息  -f 格式化显示出进程的id号,等其他信息

2.上述命令,找到了一堆进程,如何过滤出我们要的信息呢?

学习如何,正确使用 grep 和管道符,去过滤机器上某个进程,判断某个进程是否存在

1.找出vim的进程

2.找出nginx的进程

检查端口  

1.需要学习,检查系统端口的命令,这个命令,和ps -ef  一样,是查看系统某资源信息
netstat -tunlp   # 这个组合参数,是查看系统上,所有的端口信息

netstat -tunlp

2. 过滤出,机器上,和ssh远程连接的端口信息,提示程序名叫ssdh,或者端口号是22

结合查看端口的命令+ 管道符+ grep,实现,高效的过滤

netstat -tunlp   | grep  'nginx'
 统计文件数量


1.先找出/var/log下所有的log文件,find是递归搜索,找出所有的log后缀文件,不放过一个

find /var/log -name '*.log' | wc -l

统计系统用户数量  
cat /etc/passwd |  wc -l
管道符,结合find命令搜索信息

1.找出系统中所有的txt文件,然后再过滤出,其中包含了apple信息的txt是哪些


find / -name '*.txt'  # 这个命令找出的,每一个txt文件的名字吧,并且就是,一堆,一行一行的文本而已

2.我要判断出,这些文件,哪一个是包含了apple字符串内容的
一个个的去grep这些文件才行!!!
 

 

xargs

作用是,简单的说 就是把其他命令的给它的数据,传递给它后面的命令作为参数

先抛出需求

 语法如下

命令1 | xargs 选项

选项

-i 用 {} 代替传递的数据

xargs实现批量备份

xargs实现批量重命名

全系统中搜索,包含某数据的文件名

grep -l 显示匹配到数据的的文件名

[root@localhost tmp]# find /  -type f  -name '*.txt' | xargs  -i grep -l 'xiake' {}
/var/log/nginx/mima.txt

作业及拓展:

找出系统上所有的txt、log、png⽂件,且显示其⽂件详细信息。(⼀条命令完成)

[root@server ~]#find / -type f -name "*.txt" -o -name "*.log" -o -name "*.png" | xargs ls -l

找出系统中超过1M的txt,并且显示其⽂件具体容量信息。(⼀条命令完成)

[root@server ~]#find / -type f -size +1M -name "*.txt" | xargs du -sh

请找出 /var/log ⽬录下哪些⽂件中含 passwd 信息。(提示,查⼀下 -R 参数)

# -n显示行号,w整个单词,-l显示该文件名
[root@server ~]#find /var/log/ -type f  | xargs grep -w -n -l "passwd"

请备份 /var/log 下所有的 .log ⽂件,备份到 /var/log/bak_log/ ⽬录下

[root@server ~]#find /var/log/ -type f -name "*.log" | xargs -i cp {} /var/log/bak_log/

解释下什么是⽂件创建时间,访问时间,修改时间(代码演示)

Linux文件系统每个文件都有三种时间戳:

  • 访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。

  • 修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。

  • 属性变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

[root@server ~]#stat test.txt 
  File: ‘test.txt’
  Size: 55            Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d    Inode: 33639599    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-03-10 18:48:45.782391133 +0800        # 访问时间
Modify: 2022-03-10 18:48:45.782391133 +0800        # 修改时间
Change: 2022-03-10 18:48:45.782391133 +0800        # 属性变化时间
 Birth: -

解释下如下时间属性

Access time      # 访问时间
Modify time      # 修改时间
Change time      # 属性变化时间

创建⽂件,且修改⽂件的时间属性,根据如下要求

[root@yuanlai-0224 tmp]# touch /tmp/yuchao_linux.txt
1.修改/tmp/yuchao_linux.txt 访问时间 为2018-08-08 13:00
2.修改/tmp/yuchao_linux.txt 数据修改时间 为2020 07:00

[root@server ~]# touch /tmp/yuchao_linux.txt

[root@server ~]#touch -a -d "2018-08-08 13:00" /tmp/yuchao_linux.txt 

[root@server ~]#stat /tmp/yuchao_linux.txt
  File: ‘/tmp/yuchao_linux.txt’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d	Inode: 17571085    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-08 13:00:00.000000000 +0800
Modify: 2022-03-10 19:48:01.837628778 +0800
Change: 2022-03-10 19:50:09.153637286 +0800
 Birth: -
[root@server ~]#touch -m -d "2020-01-01 07:00" /tmp/yuchao_linux.txt 
[root@server ~]#stat /tmp/yuchao_linux.txt
  File: ‘/tmp/yuchao_linux.txt’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d	Inode: 17571085    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-08 13:00:00.000000000 +0800
Modify: 2020-01-01 07:00:00.000000000 +0800
Change: 2022-03-10 19:51:36.266643108 +0800
 Birth: -

找到 /var/log ⾥,3天前的所有log⽂件,且删除(⼀条命令,需要有确认提示的删除指令)

#方法一
[root@server ~]#find /var/log/ -type f -mtime +3 -name "*.log" -delete


#方法二
[root@server ~]#find /var/log/ -type f -mtime +3 -name "*.log" -ok rm {} \;

找到/etc/下,最近2天的被修改的所有⽂件,且显示详细信息(⼀条命令。)

[root@server ~]#find /etc/ -type f -mtime -2 | xargs ls -l
-rw-r--r--. 1 root root   545 Mar  9 10:14 /etc/group
----------. 1 root root   430 Mar  9 10:14 /etc/gshadow
-rw-r--r--. 1 root root 36008 Mar  9 10:14 /etc/ld.so.cache
-rw-r--r--. 1 root root  1086 Mar  9 10:14 /etc/passwd
-rw-r--r--. 1 root root    78 Mar 10 16:13 /etc/resolv.conf
-rw-r--r--. 1 root root    78 Mar  9 21:40 /etc/resolv.conf.DFE1I1
----------. 1 root root   777 Mar  9 10:14 /etc/shadow
-rw-r--r--. 1 root root   362 Mar  9 19:52 /etc/sysconfig/network-scripts/ifcfg-ens33
-rw-r--r--. 1 root root    14 Mar 10 08:52 /etc/tuned/active_profile
-rw-r--r--. 1 root root     5 Mar 10 08:52 /etc/tuned/profile_mode

找出机器上,⼤于100k且⼩于2M的所有⽂件。(⼀条命令)

[root@server ~]#find / -type f -size +100k -size -2M |xargs du -sh

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激进的猴哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值