一、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总结的更多相关文章

  1. Shell 常用命令总结

      Shell常用命令总结 1  ls命令:列出文件 ls -la 列出当前目录下的所有文件和文件夹 ls a* 列出当前目录下所有以a字母开头的文件 ls -l *.txt 列出当前目录下所有后缀名 ...

  2. (转)Hbase shell 常用命令(1)

    Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...

  3. shell常用命令归类整理

    shell 命令整理     bash shell 含有许多功能,因此有许多可用的命令:本文档仅罗列了一些常用命令及其使用频率较高的参数.#本文档仅罗列了一些常用命令及其使用频率较高的参数.#vers ...

  4. Linux+Shell常用命令总结

    因为自己不经常使用linux的命令行工具,但是mac的终端还是经常使用的,有些命令总是要想一会或者百度一下才知道怎么用,抽时间整理了一下常用的命令,作为笔记. 常用命令 查看文件操作: ls :列出当 ...

  5. RedHat Linux Shell常用命令(多数也适用于Unix和AIX)

    注:本文转载自疯狂的矩阵一文,http://www.cnblogs.com/520sojustdoit/p/4642568.html --------------------------------- ...

  6. Linux/Mac/Shell常用命令

    常用命令 · ls 查看当前目录下的文件 · cd 进入某目录 · cd - 跳转回前一目录 · cd ~ 进入当前用户个人目录 · pwd 输出当前所在路径 · mkdir 新建文件夹 · touc ...

  7. hbase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  8. 【转载】HBase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  9. linux常用命令:grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  10. (三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)

    3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" ...

随机推荐

  1. JS 网页快捷键设置

    我们希望能用快捷键代替鼠标点击做一些事情,例如一个典型的应用就是论坛上常用的Ctrl + Enter 快捷发帖子.就以Ctrl+Enter快捷发帖子为例,实质上呢,就是通过JS脚本,捕获系统的onke ...

  2. FastAdmin 如何用 composer bower 安装

    FastAdmin 如何安装 composer bower 众所周知的原因,compower bower 安装并不怎么稳定. 刚开始安装时还有侥幸,用软件安装里的设置端口代理,composer 倒是可 ...

  3. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境

    1.资源准备 最近,在VmwareStation 10虚拟机上,基于CentOS5.4安装Oracle 11g RAC,并把过程记录下来.刚开始时,是基于CentOS 6.4安装Oracle 11g ...

  4. import和export语法报错

    “最近在学习ES6”,但是在chrome中新建了js通过ES6语法(import,export)无法引入外部JS,报错: Uncaught SyntaxError:Unexpected token { ...

  5. SEO之H1,H2,H3,H4....STRONG使用方法

    作为一个SEO从业人员,我们不仅仅是要懂得如何通过网站内容和外链等SEO手段,其实一个优秀的SEOER在从事一个SEO案例时,首先着手的是如何从网站程序本身来打好网站SEO基础. 在平时和很多朋友的交 ...

  6. ssl证书(https) iis 配置安装

    因客户给的 cer的文件 导入提示 失败,所以用 了 客户给的 crt的格式的证书. 安装证书操作如下:iis>>服务器证书>>右侧菜单-完成证书申请>>选择 本文 ...

  7. 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver

    场景 当我们设计程序界面的时候,中国人希望界面是中文,而美国人希望界面是英文. 我们当然希望后台代码不需改变,系统能够通过配置文件配置,来自己觉得是显示中文界面还是英文界面. 这是,Spring mv ...

  8. 【Hibernate学习笔记-5.2】使用@Temporal修饰日期类型的属性

    作者:ssslinppp       1. 摘要 关于日期类型,Java和数据库表示的方法不同: Java:只有java.util.Date和java.util.Calender两种: 数据库:dat ...

  9. jsoncpp构造json字符串和json数组

    jsoncpp构造json字符串和json数组 参考文章:Jsoncpp的简单使用 下载json文件夹放在c++项目的include目录下,在CMakeLists中include进去,然后就可以在代码 ...

  10. OS信号实现Java异步通知

    OS信号实现Java异步通知本文将结合操作系统的信号机制,来尝试实现一个简单的,不依赖功能环境的Java异步通知功能.没有特殊说明,本文所有的示例,都是基于Linux.信号简介信号是在软件层次上对中断 ...