Linux基础知识一:查找命令find/grep

find 和 grep 在 Linux 下被称为“黄金搭档”
find = 找“文件”(按文件名、文件大小、修改时间,在硬盘目录里找文件)。
grep = 找“内容”(按文字、正则表达式,在一个文件里面找特定的文字串)。

find [搜索起点目录] [匹配条件] [动作]
匹配条件参数:

-name:按文件名查找(区分大小写)。
-iname:按文件名查找(不区分大小写,比如找 readme 也能找到 README)。
    find ~ -name "readme.txt" 在家目录下找名叫 readme.txt 的文件
-type:按类型查找。(linux下一切皆文件,总共分为七种:-普通文件;d目录文件;l软链接;b块设备;c字符设备;p管道;s套接字文件;)
    find . -type f (找普通文件)。
-size:按文件大小查找
    find / -size +100M (找超过 100MB 的大文件)。
    find . -size -10k (找小于 10KB 的小文件)。
-mtime:按修改时间查找(以“天”为单位)
    find . -mtime -1 (找1天内修改过的文件)。
    find . -mtime +30 (找30天前修改过的文件)。
-exec:对找到的文件执行后续的命令(这是最强大的动作,通常配合 {} \; 使用)。
    find . -name "*.log" -exec rm {} \; (找到所有 .log 结尾的日志文件并删除它们)。

grep [选项] "要搜索的字符串" [要搜索的文件或目录]    
选项如下所示:
    

    -r 或 -R:递归搜索(如果目标是个目录,会连带子目录里的所有文件一起搜,非常重要)。
            grep -r "include" ./kernel/ (在 kernel 目录下搜所有包含 include 字样的文件)。
    -i:忽略大小写。
            grep -i "hello" main.c (能搜到 hello、Hello、HELLO)。
    -n:显示匹配行在文件中的行号(排查代码必用)。
            grep -n "error" log.txt (不仅告诉你有 error,还告诉你发生在第几行)。
    -l:只显示包含匹配字符的文件名,不显示具体内容(有时只想找文件)。        
            grep -rl "CONFIG_ARCH" ./ (在当前目录递归寻找包含 CONFIG_ARCH 的文件,并只列出文件名)。
    -w:全字匹配(不匹配单词的一部分)。
            假设文件里有个词 main,如果搜 ma(不加 -w)会搜到;如果加 -w,只有包含完整单词 main 的行才会被搜出。        
    -E:支持扩展的正则表达式(如 | 或运算)。
            grep -E "error|warning" log.txt (在日志里同时搜 error 或 warning)。    
    --color=auto:把搜到的关键词标红/标亮显示(默认常在配置文件中开启,强烈建议使用)。  

find和grep组合:

    组合 1:找文件,并且在文件里搜内容(查源码最常用)
        在当前项目下,找出所有 .c 文件,并且看看哪些文件里写了 dma_alloc。    
        find . -name "*.c" -exec grep -n "dma_alloc" {} \;
    组合 2:找文件,并批量删除        
        删除当前目录下 所有 7 天前生成的 .log 备份日志。
        find . -name "*.log" -mtime +7 -exec rm {} \;
    组合 3:反向查找(排除特定字符串)        
         kernel/ 目录下找所有包含 dma,但是不包含 dma_alloc 的文件:    
        grep -rn "dma" ./kernel/ | grep -v "dma_alloc"    
        (grep -v 的意思是剔除含有该字符串的行)    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值