Linux四剑客-find和grep

Linux四剑客之grep&find

1、grep

过滤:在文件中或管道中进行查找,找出想要的内容(字符串)默认按照行查找,grep会把匹配到的行显示出来。

1.1常用选项说明
grep选项说明
-niline-number 显示行号
-ignore-case 过滤的时候忽略大小写
-v排除,取反
-E匹配扩展正则,相当于egrep
1.2案例与应用
1)基本用法

grep "要找的内容" /etc/passwd

#在/etc/passwd中过滤出包含root的行
[root@yunwei ~]# grep 'root' /etc/passwd

在这里插入图片描述

grep 也可以对接管道

#过滤出sshd的进程
[root@yunwei ~]# ps -ef | grep 'sshd'

在这里插入图片描述

2) 显示内容和行号
显示/etc/passwd中包含root的行及行号
[root@yunwei ~]# grep -n 'root' /etc/passwd

在这里插入图片描述

3)过滤不区分大小写
过滤/var/log/secure文件中failed password的行不区分大小写
[root@yunwei ~]# grep -i 'failed password' /var/log/secure 

在这里插入图片描述

4)排除
排除/etc/passwd中的nologin的行
[root@yunwei ~]# grep -v 'nologin' /etc/passwd

在这里插入图片描述

5)匹配正则
匹配出/etc/passwd文件中所有小写字母
[root@yunwei ~]# grep -e '[a-z]' /etc/passwd
[root@yunwei ~]# egrep '[a-z]' /etc/passwd

在这里插入图片描述

补充:

四剑客 awk sed grep find

三剑客 awk sed grep

2、find

四剑客四号选择,擅长查找文件。在指定的目录中查找你要的文件,文件名。

find在指定目录中查找文件

find 目录 -type 指定类型 -name 指定名字

find命令选项说明
-type什么类型的文件,f表示文件 d表示目录
-name文件名
-size根据大小查找文件 +表示大于 -表示小于 +10k(小写K) +10M(大写) G
-mtime根据修改时间查找文件
-maxdepth查找文件的时候指定最多找多少层目录
#案例一 找出/etc/下面以.conf结尾的文件个数
find /etc/ -type f -name  "*.conf" | wc -l
149#案例二 找包含wechat的文件夹: (可能是开头,可能是结尾,可能是中间)
find / -type d -name "*wechat*"
/wechat
find / -type d |grep "wechat"
/wechat
​
#案例三 根据大小找出文件 在/etc/目录下面找出大于10kb的文件数
find /etc/ -type f -size +10k | wc -l
270#案例四 找出/etc/目录下以.conf结尾的,7天之前的文件数
find /etc/ -type f -name "*.conf" -mtime +7 | wc -l
149#案例五 查找文件的时候指定最多找多少层目录.
find / -maxdepth 2 -type f -name "*.conf"
-maxdepth 1 选项位置第1个,指定find命令查找的最大深度 (层数),不加上就是所有层。
​
#案例六 查找的时候不区分文件名的大小写
find / -type f -iname "*.conf"

find与其他命令配合

#案例一 找出/test/find/以.txt结尾的文件显示详细信息
find /test/find/ -type f -name "*.txt" | xargs ls -l
ll -ih `find /test/find/ -type f -name "*.txt"`

故障原因:

前面的命令通过管道传递给后面命令,传递的是字符串 .

这个命令(ls)中传递文字符号不行,要传递参数

在这里插入图片描述

#案例二 find找出/test/find/以.txt结尾的文件放在/test/txt.tar.gz
tar zcf /test/txt.tar.gz `find /test/find/  -type f -name "*.txt"` 
find -type f -name "*.txt" | xargs tar zcf /test/find/txt.tar.gz
find -type f -name "*.txt" -exec tar zcf /test/find/txt.tar.gz {} +
有坑,因为-exec;执行方式 1个文件1个文件的压缩
​
#案例三 find找出/test/find/ 以.txt结尾的文件然后复制到/tmp下面
cp -t /tmp/ `find /test/find/  -type f -name "*.txt"`
find /test/find/  -type f -name "*.txt" | xargs cp -t /tmp/
​
find /test/find/  -type f -name '*.txt -exec ls -lh {} ;
-exec是find选项,表示find找出文件后要执行的命令
{}表示前面find命令找出的文件。
;表示命令结束,固定格式.

踩坑指南

tips:细看常用命令语法,目录和顺序

cp -a 源文件 源目录 目标

cp -t 目标路径 源文件

-t调转方向

-a集成了 -r递归目录下文件 和 -dp并保留所有相关的属性

find 目录 -type -name ""

tar zcf *.tar.gz 文件

正确用法:
[root@yunwei test]# tar zcf test.tar.gz /test/find/*
错误用法:
[root@yunwei test]# tar zcf test1.tar.gz /test/find/
在这个例子中,/test/find/ 是目标目录,tar 将会打包这个目录及其所有内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值