Linux四剑客之grep&find
1、grep
过滤:在文件中或管道中进行查找,找出想要的内容(字符串)默认按照行查找,grep会把匹配到的行显示出来。
1.1常用选项说明
grep选项 | 说明 |
---|---|
-n | iline-number 显示行号 |
-i | gnore-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 将会打包这个目录及其所有内容。
标签:grep,name,etc,Linux,test,type,find
From: https://blog.csdn.net/sujiade2/article/details/141295505