Shell常用命令find、grep总结
一、find 命令
find 命令的常用形式可以简化为
find [path...][expression]
- path:find 命令查找的目录路径,其中 ./ 表示当前目录,/ 表示系统根目录
- expression:可以分为
-options [-print -exec -ok ...]
- -options:指定 find 命令的常用选项
- -print:find 命令将匹配的文件输出到标准输出
- -exec:find 命名对匹配的文件执行该参数所给出的 shell 命令
- -ok:与 -exec 类似,只不过在执行每一个命令之前都会给出提示,让用户决定是否执行
1. find 命令的常用选项
- -name
按照文件名查找文件。
# 在当前目录与子目录下查找txt后缀的文件
find ./ -name "*.txt"
- -mtime -n +n
按照文件的更改时间来查找文件,-n 表示文件更改时间在 n 天之内,+n 表示文件更改时间在 n 天之外。
# 查找在当前目录下2天内修改的文件
find ./ -mtime -
- -newer file1
查找比文件 file1 新(即更改时间晚)的文件
# 查找当前目录下比1.txt新的文件
find ./ -newer .txt
- -type
查找某一类型的文件,例如
d - 目录
f - 普通文件
b - 块设备文件
c - 字符设备文件
p - 管道文件
l - 符号链接文件
# 在当前目录查找所以目录文件
find ./ -type d
- -size n
查找大小为 n 的文件,末尾带有 c 时表示文件大小以字节计,带 k 时表示文件大小以 KB 计,以此类推。
# 查找当前目录下大小大于10k的文件
find ./ -size +10000c
2. find 与 xargs 搭配
xargs 与 -exec 类似,对 find 命名匹配的文件执行该参数所给出的 shell 命令,并且效率更高。
# 查找当前目录下所有文件并输出文件类型
find . -type f -print | xargs file # 查找当前目录下所有txt文件并将结果输出到txt.log文件,一行输出一个结果
find . -name "*.txt" -print | xargs -n1 > /e/txt.log # 查找当前目录下的所有文件并在这些文件中搜索add_experience并将结果输出到文件
find . -type f | xargs grep "add_experience" > /f/add_experience.txt # 删除3天以前的所有文件和文件夹
find ./ -mtime + -print | xargs rm -f -r # 删除文件大小为0的文件
find ./ -size | xargs rm -f
二、grep 命令
grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。它的命令格式一般为:
grep [option] "pattern" filename
- option 常见选项
- -c:只输出匹配行的计数
- -i:不区分大小写(只适用与单字符)
- -n:显示匹配行及行号
- -s:不显示不存在或无匹配文本的错误信息
- -v:显示不包含匹配文本的所有行
- -o:只显示文件中匹配到的部分
- -l:列出匹配的文件清单
- -L:列出不匹配的文件清单
- pattern:要搜索的关键字或正则表达式语句
- 要搜索的文件名
1.简单使用
如下所示:
# 查找1.txt中存在aaa的行,并输出行号
grep -n "aaa" .txt
2. 正则表达式
正则表达式主要元字符及使用如下表所示:
|
元字符 |
功能 |
例子 |
匹配什么 |
|
^ |
锚定行的开始 |
/^love/ |
匹配所有以love开头的行 |
|
$ |
锚定行的结束 |
/love$/ |
匹配所有以love 结束的行 |
|
. |
匹配一个字符 |
/l..e/ |
匹配这样的行,这些行包含这样的字符:第一个字符是l,紧跟着两个字符,然后是e |
|
* |
代表0个或多个先前字符 |
/*love/ |
匹配所有这样的行,有0个或多个空格,空格后跟着love |
|
[] |
匹配字符组中的一个字符 |
/[Ll]ove/ |
匹配所有包含love或者Love的行 |
|
[^] |
匹配一个不在范围内的字符 |
/[^A-Z]ove/ |
|
|
< |
锚定单词的开始 |
<love |
匹配所有这样的行,这些行包含以love开头的单词(vi和grep支持这个功能) |
|
> |
锚定单词的结束 |
Love> |
匹配所有这样的行,这些行包含以love结束的单词(vi和grep支持这个功能) |
|
(..) |
标记后面用到的匹配字符 |
/(love)able1rs/ |
最多可以使用9个标签。第一个标签是模板最左边的部分。在本例子中,模板love保存的标签为1,后面的1指得就是love;本例子搜索的是这样的行,这些行包含这样的字符,在Loveabel后面跟着lovers |
|
x{m} |
M次复制字符x |
||
|
x{m,} |
至少m次复制字符x |
||
|
x{m,n} |
至少m次,至多n次复制字x |
||
|
w |
文字和数字字符,[A-Za-z0-9] |
Lw*e |
匹配一个L字符,紧跟着0个或多个文字或数字字符,然后是e |
|
W |
同上 |
||
|
b |
单词分界线 |
bloveb |
仅仅匹配单词love |
简单使用如下:
# 搜索aaa开头的行
grep -n '^aaa' .txt # 搜索至少包含连续3个a的行
grep -n 'a\{3,\}' .txt # 搜索包含aaa或者daa的行
grep -n '[ad]aa' .txt
Shell常用命令find、grep总结的更多相关文章
- Shell 常用命令总结
Shell常用命令总结 1 ls命令:列出文件 ls -la 列出当前目录下的所有文件和文件夹 ls a* 列出当前目录下所有以a字母开头的文件 ls -l *.txt 列出当前目录下所有后缀名 ...
- (转)Hbase shell 常用命令(1)
Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...
- shell常用命令归类整理
shell 命令整理 bash shell 含有许多功能,因此有许多可用的命令:本文档仅罗列了一些常用命令及其使用频率较高的参数.#本文档仅罗列了一些常用命令及其使用频率较高的参数.#vers ...
- Linux+Shell常用命令总结
因为自己不经常使用linux的命令行工具,但是mac的终端还是经常使用的,有些命令总是要想一会或者百度一下才知道怎么用,抽时间整理了一下常用的命令,作为笔记. 常用命令 查看文件操作: ls :列出当 ...
- RedHat Linux Shell常用命令(多数也适用于Unix和AIX)
注:本文转载自疯狂的矩阵一文,http://www.cnblogs.com/520sojustdoit/p/4642568.html --------------------------------- ...
- Linux/Mac/Shell常用命令
常用命令 · ls 查看当前目录下的文件 · cd 进入某目录 · cd - 跳转回前一目录 · cd ~ 进入当前用户个人目录 · pwd 输出当前所在路径 · mkdir 新建文件夹 · touc ...
- hbase基本概念和hbase shell常用命令用法
1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...
- 【转载】HBase基本概念和hbase shell常用命令用法
1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...
- linux常用命令:grep 命令
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...
- (三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)
3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" ...
随机推荐
- FastAdmin selectPage 前端传递查询条件
★夕狱-东莞 2018/2/2 16:19:33 selectpage 怎么在前端传递查询条件,看了下源码,好像有个custom,怎么用来的,比如我要下拉的时候,只显示id=1的数据 Karson-深 ...
- 自适应巡航控制系统——ACC
ACC(Adaptive Cruise Control)自适应巡航控制系统(以下简称ACC)是一种基于传感器识别技术而诞生的智能巡航控制,相比只能根据驾驶者设置的速度进行恒定速度巡航的传统巡航控制系统 ...
- 使用过的bug跟踪系统
MantisBT jira
- python值传递和指针传递
a= 1def change_integer(a): a=a+1 return a print change_integer(a)print a b= [1, 2, 3] ...
- WinForm 窗体间参数传递
http://www.cnblogs.com/xinjian/archive/2011/09/15/2177851.html 本人刚刚接触Winform ,学习之后分享下心得. winform 窗体与 ...
- Spring Boot 整合 FastDFS 客户端
原文地址:Spring Boot 整合 FastDFS 客户端 博客地址:http://www.extlight.com 一.前言 前两篇介绍整体上介绍了通过 Nginx 和 FastDFS 的整合来 ...
- ML(4.3): R Random Forest
随机森林模型是一种数据挖掘模型,常用于进行分类预测.随机森林模型包含多个树形分类器,预测结果由多个分类器投票得出. 决策树相当于一个大师,通过自己在数据集中学到的知识对于新的数据进行分类.俗话说得好, ...
- 【unittest】unittest单元模块做assert
我在Windows上开发Python用的版本是2.7,在Ubuntu上开发的版本是2.6,而在Python的unittest模块中,有几个方法是在2.7才有的,它们是: Method Checks t ...
- ORACLE删除某用户下所有对象
ORACLE删除某用户下所有对象 2013-10-26 15:50 4996人阅读 评论(1) 收藏 举报 --.sql脚本 --唯一注意的是下面的D:\dropobj.sql 为操作的.sql; ...
- serialize unserialize
转自 http://www.cnblogs.com/yeer/archive/2009/03/25/1421161.html php函数serialize()与unserialize() seri ...