Linux学习之——查找和筛选
来源:互联网 发布:淘宝模特去哪里找 编辑:程序博客网 时间:2024/06/10 15:38
一、查找文件
1、概况
find:从指定位置进行遍历查找,也就是对文件和目录进行逐一查找。另外,可以查找具有某一类特征的文件(如指定某个权限特征的文件)。非常适合处理具有某一个特征的批量文件。
格式:
find【path】 【expression】
expression是查找表达式,包含选项、测试和动作3类。
选项:
- help : 帮助信息
- depth: 查找当前目录后再查找子目录
- maxdepth LEVEL: 设置向下搜索到第LEVEL层目录,0表示只搜索当前目录
- mindepth LEVEL: 至少向下搜索LEVEL层目录
- mount : 不搜索远程文件系统
- follow:搜索如果遇到链接文件就连同链接所指向的文件一起搜索
测试:
- name :按文件名查找
- perm : 按文件权限查找
- type:查找某一类型的文件
- mtime + n - n : 按文件修改时间查找,+n表示修改时间距离现在n天前,-n表示距离现在n天以内
- atime + n - n : 按文件访问时间查找
- size n(c):查找文件长度为n块的文件,c表示文件大小n字节的文件
- user:按照文件属主查找
- group:安装文件属组查找
- nouser:查找没有有效属主的文件
- nogroup:查找没有有效属组的文件
动作参数:
- prune:不在指定目录中查找
- print:将查找到的文件输出到标准输出
- exec:对查找到的文件执行exec后附带的shell命令
- ok:对查找到的文件执行ok后附带的shell命令,每次执行前将提示用户是否执行
2、查找实例
- 按文件名查找
find /etc/ -name "smb.conf" -print &
在一个很大的文件系统中查找文件可能耗时很长,建议在末尾加上&放到后天运行。- 按文件权限查找
find / -perm -007 -print #查找包含其他用户可读、可写、可执行的文件,-007表示包含,007则表示等于
- 按文件类型查找
find ./file -type c -print
- 按文件时间戳和大小查找
find / -mtime -7 -print
find . -size +10000000c -print #查找大于10M的文件find . -size -30 -print #查找文件小于30块的文件
- 按文件属主属组查找
find / -nouser -printfind / -group admin -print
- 其他
find ./backup -name "msg" -mtime +7 -exec ls -l {} \;
二、文本查找
1、概况
grep(global regular expression print):在文件中查找与字符串pattern相关的内容,如果找到就输出到标准输出。
格式: gerp 【option】 pattern 【file】
option:
- i : 忽略大小写
- n :输出结果时输出行号
- s:没有查找到内容时不显示错误信息
- l:从多个文件中查找,只输出找到文件内容的文件名
- h:从多个文件中查找,只输出匹配内容,不显示文件名
- c:输出匹配内容的总行数
- v:反转查找,输出匹配内容以外的行
工作过程:以行为查找单位,从文本第一行读入缓冲区并执行查找,如果找到就输出整行,否则就丢弃缓冲区内容并读入下一行继续查找,只到文本结束。
2、配合正则表达式
- 行首行尾匹配: ‘^......02’ ‘[a-z]$’
- 次数: ‘c\{3,\}’ 至少出现3次
- 使用或与: ‘x|y’ grep -in 'a' students | grep -ln 'b' students
3、应用
精简配置文件
cd /etc/sambamv sam.conf smb.conf_backupcat smb.conf_backup | grep -v '#' | grep -v '^;' | grep -v '^$' > smb.conf
从系统管理命令中查找输出
chkconfig --list | grep bluetooth
三、格式化文本数据抽取工具
格式化文本一般使用某个特定的字符(一般为tab)将文本中不同字段隔开,awk正是处理这种格式化的文本数据,因发明这个命令的三个作者的名字的首字母分别是A、W、K而得名。
1、概况
格式:
awk 【-F】 ‘command’ input-file awk -f script input-file
两种调用格式,前者使用-F选项指定域分隔符,默认为空格。第二种使用-f选项调用,将处理命令放在一个脚本文件中调用。
每一行为一条记录,按照域分隔符分割后,每个字段按照顺序分别为域1、域2、域3等,使用”$1“、”$2“来表示。整条记录使用”$0“表示。动作一般放在模式后面的大括号内,一般是awk的内置函数。
2、使用
- 文本头尾表达式BEGIN{......},在所有语句开始之前执行,END{.......},在所有语句结束后执行。
- 支持所有的算术表达式和关系操作符,还有正则表达 ”~/pattern/“ 、 "!~/pattern/"
awk -F: '$1 !~/root/{print $1"\t"$4}' /etc/passwd
- 流程控制
if ..else while do...while for
continue break next exit
实例:(统计普通文件的大小和文件夹的个数)
BEGIN{ A = 0; count=0;}{ if($1 ~/^-/) A += $5; if ($1 ~/^d/) count++;}END{ print "total:" A; print count-2,"directories.";}(统计ping命令的延时情况)
BEGIN{ FS="[:=]"; AVG = 0; MAX = 0; MIN = 0;}{ for(I = 1; I < 9; I++) { if (NR == 2) { MAX = $11; MIN = $11; IP_ADDR = $4; } if(NR>1 && NR < 6) { AVG += $11; if ($11 > MAX) MAX = $11; if ($11 < MIN) MIN = $11; } if (NR > 6) exit; next; }}END{ AVG = AVG/4; print "IP address:",IP_ADDR; print "Avg:",AVG,"ms"; print "Max:",MAX,"ms"; print "Min:",MIN,"ms"; }
- 变量
内置变量:FILENAME (输入文件名称) 、 NF(当前正在处理记录的个数)、NR(从文本中读取记录的个数)、FNR(当前读取的记录数,读取新文件时会重置)、OFS(设置输出分割字段的字符,默认为空格)、RS(设置记录分隔符、默认为新行)、OFMT(数字的输出格式)、ENVIRON(读取环境变量)
自定义变量:通常放在BEGIN语句中进行初始化
- 内置函数
0 0
- Linux学习之——查找和筛选
- Linux查找和筛选工具
- 鸟哥Linux学习之——查找
- 【Linux】Shell学习笔记之三——文件和目录管理(修改、查找)
- 我的extjs学习之路2—信息展示和信息筛选的实现
- Linux命令 --- 查找筛选grep
- 素数筛选之“普通筛选”和“线性筛选”
- 《Linux命令、编辑器与Shell编程》读书笔记4.1-查找和筛选工具(grep,find,sed)
- 筛选 查找
- 论文查找和筛选的实用技能
- 论文查找和筛选的实用技能
- Linux学习之十九(文本文件查找)
- ASP.NET ZERO 学习 —— (17) 应用开发Demo之筛选
- 学习笔记——求解素数问题之Eratosthenes(埃拉托色尼)筛选法
- Linux学习总结(11)——Linux文件查找
- python学习之——字符串查找 find 和 index方法
- PHP学习之字符串比较和查找
- 算法基础之查找——顺序查找和二分查找
- IOS 开发之设置UIButton的title
- VS2012常用的快捷键
- JSP学习的基础工具之三—eclipse与tomcat7.0的配置
- 百度统计快速入门手册
- JDBC常见面试题集锦(一)
- Linux学习之——查找和筛选
- Tomcat SSL配置
- android 设备管理介绍
- Parse 使用- iOS 后台数据
- UNIX高级环境编程读书笔记(chapter12)
- RMI网络编程开发之二 如何搭建基于JDK1.5的分布式JAVA RMI 程序
- 矩阵连乘DP模型
- 两种实现多线程的方法有什么区别
- 字符过滤