一、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. Mac 上 java 究竟在哪里,本文彻底让你搞清楚!

    Mac下当你在[终端]输入java -version时,是执行的哪里的java呢,which java命令可以看到,就是[/usr/bin/java] [/usr/bin/java]只是个替身,实际指 ...

  2. 转 JMeter之修改Sampler响应数据的编码格式

    问题:JMeter的sampler响应数据中有中文时,会解析出错. JMeter的Sampler中的响应数据默认的编码格式是:ISO-8859-1.来自文件: jmeter.properties中的语 ...

  3. 非root用户执行程序---sudo的使用

    场景 在应用部署过程中,会遇到这样的问题:前期需要root用户执行配置.初始化工作,而具体的业务应用需要使用非root用户启动. 如何解决呢? 方法 可以使用sudo,实现授权. sudo命令授权,既 ...

  4. 【jmeter】jmeter之-断言和检查点

    断言就类似LoadRunner中的检查点.对上一个请求返回的信息,做字符串.数据包大小.HTML.XML.图片等做判断,确保返回的信息的准确性. 简单的来理解一下,上一章讲到,我们对用户名和密码进行了 ...

  5. android webview setcookie 设置cookie

    CookieSyncManager.createInstance(mWebView.getContext()); CookieManager cookieManager = CookieManager ...

  6. js关于a++ 与++a

    var a=6; var b=a++; 此时a的值是7;a++的值是7;b的值是6; var c=8; var d=--c; 此时c的值是7;--c的值是6;d的值是7;

  7. [转]身份证从 15 >> 18

    身份证号码的结构和表达形式 1.号码的结构 由十七位数字本体码和一位效验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字效验码.2.地址码 表示编码对象常住 ...

  8. 关于跨域读取json数据我的理解

    这两天在做关于读取json数据的插件,想用getJSON读取数据: $.getJSON(http://www.xxxx.com/Titles.js, function (data) { console ...

  9. elastix php session保存地点

    这段时间要做 asterisk 的HA 放啊,需要同步session,所以做了下来研究. 1)elastix中的session 其实是存放在 /tmp/目录中的.可是/etc/php.ini中的[se ...

  10. 含有不等式约束的优化问题——KKT条件

    优化问题: 其中, 定义:对于一个不等式约束,如果,那么称不等式约束是处起作用的约束. 定义:设满足,设为起作用不等式约束的下标集: 如果向量:是线性无关的,则称是一个正则点. 下面给出某个点是局部极 ...