IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [shell学习笔记]grep和find命令详解

    admin发表于 2012-08-13 12:34:55
    love 0

    最新在看《Linux And Unix shell Programing 》,避免看完之后忘记,以后每看一部分都记录下。今天主要记录下linux下

    最常用的两个命令grep和find。

    一、Grep命令

    grep [OPTIONS] PATTERN [FILE...]

    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

    查找文件中包含某个关键词的行;

    常用选项:
    1. -c : 只输出匹配的行数
    2. -i : 查找不区分大小写
    3. -n: 显示匹配的行号
    4. -v: 显示不包含关键词的行
    5. -A Num: 显示匹配的行及其后面num行
    6. -B Num: 显示匹配的行及其前面的num行
    7. -r:  如果遇到目录递归查询
    8. -E :正则表达式扩展
    常见的用法
    
    grep keyword -r * # 在当前目录及其子目录下查找包含keyword的行
    
    grep --exclude="*\.svn*" keyword -r  *  #功能同上,但是不查找.svn文件
    
    #正则表达式
    
    grep  ‘48[34]’ your_file #查找包含483或者484的行
    
    grep '4\{3,8\}' your_file #查找包含3个到8个4的行
    
    grep -E  '216|329' your_file  #包含216或者329的行
    
    #和其它程序配合使用
    
    ps  aux | grep apache2 | grep -v grep #查找apache2相关进程
    

    二、Find命令

    find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

    在目录中查找文件

    常用选项:
    1. -name: 按照文件名来查找
    2. -type: 按照文件类型查找(b: block  d: directory  )
    3. -perm: 按照权限来查找
    4. -user: 按照文件属主来查找
    5. -group: 按照组来查找
    6. -mtime +n -n: 按照修改时间来查找,-n代表n天以内的修改的文件,+n代表n天以前的修改的文件
    7. -newer fil1 !file2 : 查找比file1新的文件,但是比file2旧的文件
    8. -size n c: 按照文件大小查找,带c表示以字节计算
    9. -exec:  当匹配到文件后,执行某些命令,该命令以 {} \;结束,如果在执行命令前需要确认,请加-ok选项
    常见的用法
    
    find . -name "*.txt" -print  #在当前目录及其子目录中查找以.txt文件为后缀的文件
    
    find . -type d -print #查到当前目录中的目录文件
    
    find . -mtime +5  -name "*.log" -exec rm {} \; #删除5天前得日志
    
    find . -mtime +5  -name "*.log" -ok rm {} \; #功能同上,但是删除前会确认
    

    您可能对下面文章也感兴趣:

    • [shell学习笔记]sort、uniq、cut、paste和split用法详解
    • shell下同时读取多个文件的方法
    • linux通过Shell获得本机ip地址方法
    • 定时备份网站代码与数据的shell工具
    • 一个对MapReduce理解绝佳的例子


沪ICP备19023445号-2号
友情链接