今日内容

  • find
  • 正则表达式
  • Linux 三剑客之 grep

内容详细

一、find 按名称或属性查询文件

按名称查询

	find [查找目录] [参数] []
通配符 : * 表示匹配多个字符
? 表示匹配一个字符
忽略大小写 : -i find /etc -name '*.repo'
find /etc -iname '*Host' [root@localhost ~]# find /etc/yum.repos.d -name '*.repo'
/etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/CentOS-CR.repo [root@localhost ~]# find /etc -iname 'Hos*'
/etc/host.conf
/etc/hosts

按照时间查询


+ 表示几天之前; - 表示几天以内
-mtime : 按文件内容被修改时间
-ctime : 按文件属性被修改时间
-atime : 按文件最新被访问时间 find /etc -mtime +5
find /etc -ctime -3
find /etc -atime -5 [root@localhost ~]# find /root -mtime -3
/root
/root/anaconda-ks.cfg
/root/.bash_history [root@localhost ~]# find /root -ctime -3
/root
/root/.bash_logout
/root/.bash_profile

按文件大小查询

	+ 为大于; - 为小于;没符号是等于;数字后面跟单位(M, b, k..)
`b' for 512-byte blocks
`c' for bytes
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes)
`M' for Megabytes (units of 1048576 bytes)
`G' for Gigabytes (units of 1073741824 bytes)
find /etc -size +5M [root@localhost ~]# find /etc -size 2M
/etc/selinux/targeted/contexts/files/file_contexts.bin [root@localhost ~]# find /etc -size +100k
/etc/pki/ca-trust/extracted/java/cacerts
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt

按 所属用户 查找

# 查找所有所属主是 root 的文件
find /etc -user root [root@localhost etc]# find /var/spool/ -user root
/var/spool/lpd
/var/spool/mail
/var/spool/anacron

按所属组查找

# 查找所有所属组是 root 的文件
find /etc -group root [root@localhost etc]# find /var/log -group root
/var/log/tallylog
/var/log/grubby_prune_debug
/var/log/lastlog

按照文件类型查询

	命令: find /root -type []

# 文件类型:
普通文件 : f
文件夹 : d
链接文件 : l
设备文件:
磁盘文件 : b
字符文件 : c
套接字文件 : s
管道文件 : p [root@localhost test]# echo {1..4}.txt | xargs touch
[root@localhost test]# find /test -type f
/test/1.txt
/test/2.txt
/test/3.txt
/test/4.txt [root@localhost test]# find /test -type d
/test/index1
/test/index2

按 index node 号查找

	find /root -inum []

[root@localhost test]# find /test -inum 202280969
/test/10.txt

按权限查找

	find /root -perm []

[root@localhost test]# find /test -perm 644
/test/1.txt
/test/2.txt
/test/3.txt
/test/4.txt [root@localhost test]# find /test -perm 755
/test/index1
/test/index2

其它参数

	-a : 并且(可以省略,默认时并且)
-o : 或者
-maxdepth : 查询的目录深度(必须放置与第一个参数位) -exec : 将find处理好的结果交给其它命令继续处理 (结果以 {} 表示)

知识储备

知识储备:
# dd 可以造出指定大小的文件,造出来的文件是用 '@' 符号填充
dd : 生成文件(生成指定大小的文件)
if :从什么地方读
of : 写入到什么文件
bs : 每次写入多少内存的内容
count : 写入多少次
dd if=/dev/zero of=5.txt bs=1M count=5 知识储备
| : 前面一个命令的结果交给后面一个命令处理
xargs : 把处理的文本变成以空格分割的一行
`` : 提前执行命令,然后将结果交给其他命令来处理 [root@localhost test]# echo {a..d} | xargs mkdir
drwxr-xr-x. 2 root root 6 Dec 20 20:25 a
drwxr-xr-x. 2 root root 6 Dec 20 20:25 b
drwxr-xr-x. 2 root root 6 Dec 20 20:25 c
drwxr-xr-x. 2 root root 6 Dec 20 20:25 d tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

实操

	案例1:查询/etc目录下hosts文件
[root@localhost ~]# find /etc/ -name 'hosts'
/etc/hosts
案例2:查询/etc目录下名称中包含hosts文件
[root@localhost ~]# find /etc/ -name '*hosts*' 案例3:要求把/etc目录下,所有的普通文件打包压缩到/tmp目录
[root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

二、Linux 三剑客之 grep

Linux三剑客之一,文本过滤器(根据文本内容过滤文件)。

语法格式

	grep [参数] [匹配规则] [操作对象]

参数

参数:
-n : 过滤文本时,将过滤出来的内容在文件内的行号显示出来
-A : 匹配成功之后,将匹配行的后n行显示出来
-B : 匹配成功之后,将匹配行的前n行显示出来
-C : 匹配成功之后,将匹配行的前后各n行显示出来
-c : 只显示匹配成功的行数
-o : 只显示匹配成功的内容
-v : 反向过滤
-q : 静默输出
-i : 忽略大小写
-l : 匹配成功之后,将文本的名称打印出来
-R|-r : 递归匹配 -E : 使用拓展正则 等价于 egrep

知识储备

知识储备:
$? : 上一行命令执行的结果,0代表执行成功,其他数字代表执行失败。
wc : 匹配行数
-l : 打印匹配行数
-c : 打印匹配的字节数
在/etc目录下,有多少个文件包含root。
grep -rl 'root' /etc/ | wc -l

三、正则表达式

1、正则表达式的分类(grep)

​ 1、普通正则表达式

​ 2、拓展正则表达式

2、普通正则表达式

特殊符号

	^ : 以某字符开头
$ : 以某字符结尾
. : 匹配除换行符之外的任意单个字符 [] : 某组字符串的任意一个字符
[a-z] : 匹配小写字母
[A-Z] : 匹配大写字母
[a-zA-Z] : 匹配字母
[0-9] : 匹配数字
[^] : 取反 () : 分组
\ : 取消转义
\n : 代表第n个分组

量词

	* :匹配前导字符的任意个数

3、拓展正则

	{}     :匹配的次数
{n} : 匹配n次
{n,} :至少匹配n次
{n,m} :匹配 n 到 m 次
{,m} :最多匹配m次
+ :匹配至少有一个前导字符
? : 匹配一个或零个前导字符
| :或

4、实操案例

	案例1:在/etc/passwd文件中,匹配以ftp开头的行
grep '^ftp' /etc/passwd 案例2:在/etc/passwd文件中,匹配以bash结尾的行
grep 'bash$' /etc/passwd 案例3:匹配本机中有哪些ip
ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' 案例4:要求将/etc/fstab中的去掉包含 # 开头的行,且要求 # 后至少有一个空格
grep -vE '^#\ +' /etc/fstab 案例5:找出文件中至少有一个空格的行
grep -E '\ +' xxx 案例6:将 nginx.conf 文件中以#开头的行和空行,全部删除
grep -vE '^\ *#|^$' /etc/nginx/nginx.conf

find 查询命令 & 正则表达式的更多相关文章

  1. find的基本查询命令《一》

    一. find的基本查询命令 find命令最常用的是查找某个文件,如: find ./ -name "abc.txt" 则会在当前目录及子目录下查找abc.txt文件 更常用的是查 ...

  2. DBA查询命令积累——不断更新

    原文:DBA查询命令积累--不断更新 一.服务器配置: 1.兼容级别:兼容级别只影响指定数据库中的行为,而不会影响整个服务器上的行为. 1.1.查看数据库兼容级别及更改兼容级别: SELECT com ...

  3. MySQL常用的查询命令

    MySQL常用的查询命令 author: headsen chen   2017-10-19  10:15:25 个人原创.转载请注明作者,出处,否则依法追究法律责任 1,查询现在的时间:mysql& ...

  4. MongoDb进阶实践之六 MongoDB查询命令详述(补充)

    一.引言         上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...

  5. AD域控Dsquery查询命令实列

    注:请以管理员的身份运行cmd程序,要不然某些命令不生效 AD域控Dsquery查询命令实列 查询技术支持二部的所有用户          dsquery user OU=技术支持二部,OU=技术部, ...

  6. 手机WiFi万能钥匙查看破解的password和手机查询命令收集

    手机须要网络利用WiFi万能钥匙破解了WIFI的password.手机就能够上网了,但假设想在电脑上使用手机破解的Wifi热点上网就须要password,此时须要知道手机破解的password,WiF ...

  7. Android系统代码查询命令集合

    Android系统代码查询命令集合 *#06# 显示MEID *#*#4636#*#* 显示版本,或更新相机韧体 *#*#7594#*#* 当长按关机按钮时,会出现一个切换手机部分设置及更改设定 WL ...

  8. Eucalyptus常用查询命令

    前言: Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus)  ...

  9. ELK查询命令详解

    目录 ELK查询命令详解 倒排索引 使用ElasticSearch API 实现CRUD 批量获取文档 使用Bulk API 实现批量操作 版本控制 什么是Mapping? 基本查询(Query查询) ...

随机推荐

  1. div背景css样式笔记

    <style type="text/css"> .div1 { width: 1024px; height: 100%; margin: 0 auto; /*backg ...

  2. 理解闭包--js面向对象编程

    什么是闭包? 先看一段代码: function a(){ var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a(); ...

  3. 接口神器之 Json Server 详细指南

    简介 json-server 是一款小巧的接口模拟工具,一分钟内就能搭建一套 Restful 风格的 api,尤其适合前端接口测试使用. 只需指定一个 json 文件作为 api 的数据源即可,使用起 ...

  4. JAVA之垃圾收集器

    概述 垃 圾收集 Garbage Collection 通常被称为"GC",它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计 ...

  5. python基本数据类型与操作

    一.变量 1.变量的三要素:变量名.变量值.变量数据类型 2.定义变量格式:变量名称 = 变量值 3.输出变量:print(变量名) """ 变量 "" ...

  6. Genymotion安装apk问题

    Genymotion安装apk时,出现如下错误: 问题原因分析:很多apk使用arm架构的 cpu,在x86上安装会存在问题. 解决办法: 在Genymotion模拟器上安装一个能够解析ARM架构的a ...

  7. Git使用:版本回退

    在Git中,我们可以用 git log命令查看我们修改的历史记录 C:\Users\Administrator\Documents\GitHub\learngit [master]> git l ...

  8. 神坑!为什么prometheus的pushgateway不能对上报的counter进行累加?

    部署了一个prometheus的pushgateway,然后两次对其发送counter类型的数据: #第一次发送 curl -X POST -d '# TYPE my_first_metric_ahf ...

  9. 【海淘域名】GoDaddy账户被锁定后的解决方法

    转载自[美国海淘网]http://www.usahaitao.com/Experience/Detail_2886.html   通过ICANN申诉顺利的从国内无良奸商(35互联与商务中国,小编的域名 ...

  10. Anaconda 创建 32位python虚拟环境

    Anaconda 创建 32位python虚拟环境 ​ 最近实习在做一个接口自动化数据上传的功能,因为数据是更新的,需要每次上传都查询数据库调用匹配,就不得不面对 python 连接 oracle . ...