首页 > 其他分享 >管道符与grep与find

管道符与grep与find

时间:2023-10-05 18:01:30浏览次数:27  
标签:01 grep log -- Oct rw root find 符与

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

相关文章

  • W.02 字符与字符串初步
    字符与字符串初步字符声明一个字符变量类似于int,我们有char类型来声明一个字符变量。在赋值时使用单引号包裹字符。例如:charc='+';字符的输入输出与int类似。值得一提的是,在cin和cout中,不同类型的变量是可以一次性输入,输出的。例如:inta;charc;cin>>a>>c;字......
  • mysql中find_in_set()函数的使用及in()用法详解
    MySQL手册中find_in_set函数的语法解释:FIND_IN_SET(str,strlist)str要查询的字符串strlist字段名参数以”,”分隔如(1,2,6,8,10,22)查询字段(strlist)中包含(str)的结果,返回结果为null或记录假如字符串str在由N个子链组成的字符串列表strlist中,则返回值的范围在1到N之间......
  • mysql中find_in_set()函数的使用及in()用法详解
    MySQL手册中find_in_set函数的语法解释:FIND_IN_SET(str,strlist)str要查询的字符串strlist字段名参数以”,”分隔如(1,2,6,8,10,22)查询字段(strlist)中包含(str)的结果,返回结果为null或记录假如字符串str在由N个子链组成的字符串列表strlist中,则返回值的范围在1到N之间......
  • VScode中下载了插件但是无法找到SSH Target连接服务器的解决方法(CANNOT find SSH Targ
    VSCode版本vscodeversion:(version1.82)已下载扩展installedextensions:Remote-SSHv0.106.4Remote-SSH:EditingConfigurationFilesv0.86.0RemoteDevelopmentv0.24.0WSLv0.81.3几天前我从pycharm转战vscode,在连接服务器时遇到了一些问题。根据一些较为古早的......
  • 无涯教程-JavaScript - FIND函数
    描述FIND和FINDB在第二个文本字符串中定位一个文本字符串,并从第二个文本字符串的第一个字符返回第一个文本字符串的起始位置的编号。FIND适用于使用单字节字符集(SBCS)的语言,而FINDB适用于使用双字节字符集(DBCS)的语言。您计算机上的默认语言设置会影响返回值,如下所示:......
  • abc260F - Find 4-cycle
    F-Find4-cycle显然就是在一个集合中枚举两个点,然后看在另一个集合中是否存在两个点与这个集合中的两个点都相连。假设x是v1中的一个点,设它的两条出边是(x,a),(x,b),那么记录下f[a][b]=x,根据鸽巢原理,这样做是n^2的#include<cstdio>#include<algorithm>#include<cstring>#in......
  • kernel:watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [pgrep:33099] kernel:
    一、查看报错翻译   二、检查操作一台虚拟机又kvm虚拟了5台虚拟机,并且跑了大量任务,感觉像负载过大,CPU扛不住导致,导致内核锁死。三、解决办法执行echo30>/proc/sys/kernel/watchdog_thresh,调整该值可以延长watchdog等待时间,最大为60s。 ......
  • 数据库 - MySQL转换SQL Server时,替换 FIND_IN_SET 函数引发的问题
    MySQL转换SQLServer时,替换FIND_IN_SET函数引发的问题 在之前的文章中,我列举出了一个当MySQL转换SQLServer时,FIND_IN_SET函数在SQLServer中的解决方案:链接 就是使用charindex(cast(匹配列asvarchar(50)),被匹配列(多个用,分开的值))<![CDATA[>]]>0替换MyS......
  • Windows 上 执行docker pull命令 提示:The system cannot find the file specified.
    错误提示errorduringconnect:Thiserrormayindicatethatthedockerdaemonisnotrunning.:Get"http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/version":open//./pipe/docker_engine:Thesystemcannotfindthefilespecified.解决办法在cmd窗口中执行如下命令c......
  • Error: Could not find or load main class org.apache.zookeeper.server.quorum.Quor
    下载mavenapache-maven-3.9.4-bin.tar.gz解压tar-zxvfapache-maven-3.9.4-bin.tar.gz添加环境变量vim/etc/profileexportMAVEN_HOME=/usr/local/maven-3.9.4exportPATH=${PATH}......