Linux中find命令与三剑客之grep和正则
2021/12/21 7:20:36
本文主要是介绍Linux中find命令与三剑客之grep和正则,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
昨日内容回顾
1.每个月的3号、5号和15号,且这天时周六时 执行 00 00 3,5,15 * 6 2.每天的3点到15点,每隔3分钟执行一次 */3 3-15 * * * 3.每周六早上2点半执行 30 02 * * 6 4.每隔两个月的一号下午10点执行 00 22 01 */2 * 5.root密码忘记的解决方法 1、重启 2、在启动选择系统内核界面,按 e 键进入单用户模式 3、找到 linux16 开头行,删除 ro , 并且在 ro 处添加 rw init=/sysroot/bin/sh 4、按 ctrl + x 进行系统重新引导 5、执行 chroot /sysroot 6、执行 passwd root 7、执行 touch /.autorelabel 8、执行 Ctrl + D 重启系统 6.yum私有仓库的搭建步骤 1、安装工具 yum install createrepo yum-utils nginx -y 2、创建目录 mkdir /opt/test 3、创建包目录 mkdir /opt/test/Packages 4、下载安装包 下载到Packages目录中 https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/zsh-5.0.2-34.el7_8.2.x86_64.rpm 5、初始化仓库 createrepo /opt/test 6、本地测试 7、修改nginx配置文件 [root@localhost /mnt]# vim /etc/nginx/nginx.conf # include /etc/nginx/conf.d/*.conf; root /opt/test; autoindex on; 8、启动Nginx systemctl start nginx 9、添加yum源 yum-config-manager --add-repo=http://192.168.15.100 10、远程测试
今日内容概要
- find命令
- 三剑客之grep
- 正则表达式
内容详细
find命令
# 主要用于:根据文件的名称或者属性查找文件 # 语法格式 find 查找范围 参数 # 参数: -name : 按照文件的名字查找文件 案例1:查询/etc目录下hosts文件 [root@localhost ~]# find /etc/ -name 'hosts' * : 通配符 案例2:查询/etc目录下名称中包含hosts文件 [root@localhost ~]# find /etc/ -name '*hosts*' -iname : 按照文件的名字查找文件 忽略字母大小写 -size : 按照文件的大小查询文件 + : 大于 - : 小于 没有符号 : 等于 案例3:查询当前目录下大于5M的文件 [root@localhost ~]# find ./ -size +5M [root@localhost ~]# find ./ -size -100M -mtime : 按照修改时间查询文件 +(不写符号默认就是加号) n : n天以前 - n : n天以内 案例4:查询当前目录下三天以前的文件 [root@localhost ~]# find ./ -mtime 3 -atime 与 -ctime 都与 -mtime 用法一致 -user : 按照用户的属主查询 [root@localhost ~]# find ./ -user test10 -group : 按照用户的属组查询 -type : 按照文件的类型查询 [root@localhost ~]# find ./ -type f d : 文件夹 l : 链接文件 s : 套接字文件 p : 管道文件 c : 字符文件 b : 磁盘文件 f : 普通文件 -perm : 按照文件的权限查询 [root@localhost ~]# find ./ -perm 644 -inum : 根据index node号码查询 [root@localhost ~]# find ./ -inum 134319695 以下参数不能单独使用,必须配合其他参数一起使用: -a : 并且(可以省略,默认就是并且) -o : 或者 -maxdepth n : 查询n层的目录深度(必须放置与第一个参数位) 案例5:查询/etc/目录下hosts文件 并且目录深度2层即可 [root@localhost ~]# find /etc/ -maxdepth 2 -a -name 'hosts' 也可以省略 [root@localhost ~]# find /etc/ -maxdepth 2 -name 'hosts' -exec : 将find处理好的结果交给其他命令继续处理 案例6:要求把/etc目录下,所有的普通文件打包压缩到/tmp目录 [root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs` # 知识拓展: dd if=/dev/zore of=100.txt bs=10M count=10 dd : 生成文件 if : 从什么地方读 of : 写入到什么文件 bs : 每次写入多少内容 count : 写入多少次 | : 前面一个命令的结果交给后面一个命令处理 xargs : 把处理的文本变成以空格分割的一整行显示 ``(反向引号) : 提前执行命令,然后将结果交给其他命令来处理
三剑客之grep
# linux三剑客之一,文本过滤器(根据文本内容过滤文件) # 语法格式: grep [参数] [匹配规则] [操作对象] # 参数: 常用的有标记(***) -n : 过滤文本时,将过滤出来的内容在文件内的行号显示出来(***) -A : 匹配成功之后,将匹配行的后n行显示出来 -B : 匹配成功之后,将匹配行的前n行显示出来 -C : 匹配成功之后,将匹配行的前后各n行显示出来 -c : 只显示匹配成功的行数(***) -o : 只显示匹配成功的内容(***) -v : 反向过滤(***) -q : 静默输出 -i : 忽略大小写 -l : 匹配成功之后,将文本的名称打印出来 -R或-r :递归匹配 -E : 使用拓展正则 等价于 egrep 案例:在/etc目录下,有多少个文件包含root [root@localhost ~]# grep -rl 'root' /etc/ | wc -l # 知识拓展: $? : 上一行命令执行的结果,0代表执行成功,其他数字代表执行失败 一般搭配 echo $? 输出结果 wc : 匹配行数 -l : 打印匹配行数 -c : 打印匹配的字节数
正则表达式
# 正则表达式的分类(grep) 普通正则表达式(grep语法不需要加 -E) 拓展正则表达式 # 1.普通正则表达式 ^ : 以某字符开头 案例1:在/etc/passwd文件中,匹配以ftp开头的行 [root@localhost ~]# grep '^ftp' /etc/passwd $ : 以某字符结尾 案例2:在/etc/passwd文件中,匹配以bash结尾的行 [root@localhost ~]# grep 'bash$' /etc/passwd . : 匹配除换行符之外的任意单个字符 * : 匹配前导字符的任意个数 [] : 某组字符串的任意一个字符 案例3:在/etc/passwd文件中,匹配以 r或q 开头的行 [root@localhost ~]# grep '^[rq]' /etc/passwd [^] : 取反 [a-z] : 匹配小写字母 [A-Z] : 匹配大写字母 [a-zA-Z] :匹配字母 [0-9] : 匹配数字 \ : 取消转义 案例4:在/etc/passwd文件中,匹配f及后一个字符 [root@localhost ~]# grep 'f.' /etc/passwd 只会匹配 f. 内容 [root@localhost ~]# grep 'f\.' /etc/passwd () : 分组 \n : 代表第n个分组 匹配两个分组 [root@localhost ~]# grep '\(ew\)\(qr\)\.*\1\2' /etc/passwd 匹配一个分组(有两个分组 但是只会匹配一个) [root@localhost ~]# grep '\(ew\)\(qr\)\.*\1' /etc/passwd # 2.拓展正则 {} : 匹配的次数 {n} : 匹配n次 {n,} : 至少匹配n次 {n,m} : 匹配 n 到 m 次(n次 中间次 m次) {,m} : 最多匹配m次 + : 匹配至少有一个前导字符 ? : 匹配一个或零个前导字符 | : 或 案例4:匹配本机中有哪些ip [root@localhost ~]# ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' 匹配0-9数字三位 匹配. 匹配3位 匹配0-9数字三位 ip a | grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" 匹配0-9数字三位 匹配. 匹配0-9数字三位 匹配. 匹配0-9数字三位 匹配. 匹配0-9数字三位 匹配. 案例5:要求将/etc/fstab中的去掉包含 # 开头的行,且要求 # 后至少有一个空格 [root@localhost ~]# grep -vE '^#\ +' /etc/fstab 案例6:找出文件中至少有一个空格的行 [root@localhost ~]# grep -E '\ +' xxx 案例7:将 nginx.conf 文件中以#开头的行和空行,全部删除 [root@localhost ~]# grep -vE '^\ *#|^$' /etc/nginx/nginx.conf
这篇关于Linux中find命令与三剑客之grep和正则的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法