grep命令

# grep参数1.  *: 表示当前目录所有文件,也可以是某个文件名2.  -r 是递归查找3.  -n 是显示行号4.  -R 查找所有文件包含子目录 (递归查询)5.  -i 忽略大小写
有意思的命令行参数:
grep -i '关键字' 文件名(*是查询全部文件) :不区分大小写地搜索。默认情况区分大小写
grep -l  '关键字' 文件名 :只列出匹配的文件名,不列出路径
grep -L  '关键字' 文件名 :列出不匹配的文件名
grep -w  '关键字' 文件名 :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
grep -C number  '关键字' 文件名 :匹配的上下文分别显示[number]行
grep pattern1 | pattern2 files :显示匹配 pattern1(关键字) 或 pattern2 的行
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行
有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、‘manic’、‘man’等
grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’
grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
'^':指匹配的字符串在行首
'$':指匹配的字符串在行尾
多个linux命令配合使用
查询不包含match的文件列表
ls | xargs grep -L "match"会把包含aaa的同时不包含bbb的文件移动到test目录
mv `grep -rl 'aaa' *.php | grep -L 'bbb' *.php` ./testmv `grep 'aaa' . -r -l| grep 'bbb' . -r -L` ./test

xargs

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。
删除数量比较多的文件
[root@eccs_web client]# ls | xargs -n 20 -t rm -rf
rm -rf abc.doc.bak imag2e.tgz.bak
ls当然是输出所有的文件名(用空格分割)
xargs就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数
也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了
删除某个目录下,所有.bak后缀的文件:
# find . -name '*.bak' | xargs rm -f
备注:find命令查找出符合条件的文件,xargs命令,将find找到的每一个文件,作为参数,传给rm命令进行处理。
查找所有有引用SimpleDateFormat这个类的java文件:
# find . -name '*.java'  | xargs grep SimpleDateFormat
通常ls列出的文件,想直接管道通过rm -rf删除是无效的.这时就要配合命令xargs使用了:例如: 按时间排序,删除最后的10个文件ls -t | tail -10 | xargs rm -rf
当然,也可以用ls -lt | tail -100 | awk '{ print $9 }' | xargs rm -rf
两者效果是相同的同理,如果想按时间倒序排列,也就是说离现在最近的时间越排在最后显示,就用ls -rt当然,也可以使用find 配合rm删除。也可以用下面的语句清空内容#!/bin/bash
for i in `ls test.log.??` ;doecho "">$i
done
当然,如果是多个目录下面,再清除文件,也是可以的。只不过多了一层嵌套而忆。我的目录结构如下:[root@web tomcat]# ll
总计 260
drwxr-xr-x 2 www www 20480 12-28 09:23 bbs
drwxr-xr-x 2 www www 16384 12-28 00:00 comment
drwxr-xr-x 2 www www 36864 12-28 03:50 enterprise
drwxr-xr-x 2 www www 24576 12-28 00:00 expert
drwxr-xr-x 2 www www 36864 12-28 00:02 feedback
drwxr-xr-x 2 www www 36864 11-15 12:30 generator
drwxr-xr-x 2 www www 24576 12-28 00:02 passport
drwxr-xr-x 2 www www 20480 12-28 00:00 search
drwxr-xr-x 2 www www 20480 12-28 09:35 usercenter
[root@web comment]# ll
总计 936
-rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-24.log
-rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-25.log
-rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-26.log
-rw-rw-r-- 1 www www       2 12-28 09:57 catalina.2012-12-27.log
-rw-r--r-- 1 www www   34155 12-28 10:01 catalina.out
-rw-rw-r-- 1 www www       2 12-28 09:57 localhost.2012-12-14.log
-rw-rw-r-- 1 www www       2 12-28 09:57 localhost.2012-12-17.log
-rw-rw-r-- 1 www www       2 12-28 09:57 localhost_access_log.2012-12-25.txt
-rw-rw-r-- 1 www www       2 12-28 09:57 localhost_access_log.2012-12-26.txt
-rw-rw-r-- 1 www www  629729 12-28 09:57 localhost_access_log.2012-12-27.txt
如果想清空以上所有目录里的所有文件,就可以这样做:for i in `ls`;do (cd $i ;for m in `ls`;do echo " ">$m;done);done
注:上面的圆括号是不能少的。而如果想要清空一个文件的内容,再使用xargs配合echo "">file,发现确不能正常生效。如:find . -name "test.*" |xargs echo "">
因为,find和echo的不是这样配合使用的。其两者简单配合有另外一个妙用:find . -name "file*" -print | xargs echo "" > /tmp/find.log
该语句的作用,是将当前目录下,所有以file开头的文件查找到,并将其相对路径及名称输入到find.log文件中,输入方式为每行一个。对符合条件的原文件不会做任何改变。

linux查询筛选命令 grep、xargs相关推荐

  1. Linux文件查找命令find,xargs详述

    Linux文件查找命令find,xargs详述 总结:zhy2111314 来自:LinuxSir.Org 整理:北南南北 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量 ...

  2. Linux || 查询类命令

    查找类的命令:     which和whereis 只能查找Linux里的命令,精确查找,到PATH变量的路径查找 locate:可以查找命令和普通文件或文件夹,模糊查找,到自己的数据库里查找(整个/ ...

  3. linux查询日志命令加过滤,Linux记录-筛选日志sed、find、tail,du,awk命令

    1.查看某一段时间的日志 #cat hdfs-audit.log | sed -n '/2018-04-11 10:00:00/,/2018-04-11 10:01:00/ p' | more   - ...

  4. linux查询日志命令加过滤,日志查看技巧之筛选[linux命令集][排查篇]

    引语:相信大家都会偶尔遇到要排查问题发生的原因的情况,那这种时候,我们最有力后盾就是日志文件了,所以谨记日志记录真的很重要.但是日志文件往往是很大的文件,而且里面有太多的东西可能不是我们需要的,如无数 ...

  5. 九种linux查询日志命令总结

    [背景] 排查线上环境问题,少不了去线上查日志.而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能. [命令] Linux查看命令有多种:tail,head,cat,t ...

  6. linux查找temp目录,Linux文件查找命令find,xargs详述

    由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 中国网管论坛 ...

  7. Linux查询端口命令

    一.使用netstat 检查端口 netstat是一个命令行工具,可以提供有关网络连接的信息. 显示所有已开放端口,请使用以下命令:netstat -anp 要列出正在侦听的所有 TCP 或 UDP端 ...

  8. linux 查询wwid命令,wwid、uuid、lun、multipath、hba、udev总结

    wwid: scsi_id命令执行后,只有磁盘.存储盘才可以显示wwid,多路径的存储盘显示的wwid一样 本地磁盘分区.存储盘分区都没有wwid 存储盘分区后,存储盘本身的wwid不变 存储盘分区且 ...

  9. linux 查询wwid命令,Linux磁盘及分区之wwid和uuid

    背景描述,在Linux系统中,如果添加了新的SCSI磁盘或者映射SAN存储LUN操作,重启操作系统之后会出现磁盘标识符(sd*)错乱的情况. 例如之前添加的SAN存储LUN的磁盘标识符为/dev/sd ...

最新文章

  1. mysql数据库中nchar_MySQL数据库中CHAR与VARCHAR之争
  2. 创建第一个 local network(I) - 每天5分钟玩转 OpenStack(80)
  3. Java中? extends T和? super T的理解
  4. 笔记-信息化与系统集成技术-供应链的特征
  5. Java自定义配置文件xml_spring-boot自定义配置文件
  6. proto的介绍和基础使用
  7. 深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化
  8. zend optimizer php5.5,PHP_PHP5.3以上版本安装ZendOptimizer扩展,现在很多PHP程序都需要ZendOptimi - phpStudy...
  9. IAR平台移植TI OSAL到STC8A8K64S4A12单片机中
  10. split出现得问题
  11. MTK 驱动开发(30)---Memory 移植
  12. 5G 来袭,数据暴增,新一代云存储平台如何承载?
  13. IDENTITY_INSERT 设置为 OFF
  14. mysql 全文所有_MySQL中的全文搜索
  15. 常用命令和常用工作地址管理工具
  16. Failed to install the following Android SDK packages as some licences have not been accepted.
  17. 纸牌游戏--小猫钓鱼
  18. deepin php7,deepin安装php7
  19. python里的英文歌叫什么_Python告诉你:从《入海》到《消愁》毛不易的歌里都在唱些什么?...
  20. IOS status bar

热门文章

  1. 算法笔记四 排队买票
  2. Phpstorm破解与汉化
  3. 青岛科技大学考研择校
  4. ENSP ipsec isakmp(自动)
  5. FPGA JTAG接口下载速度很慢
  6. DDR的Burst Chop是怎么来的
  7. Flink 系例 之 DataStream Connectors 与 示例模块
  8. dmitry 收集主机信息
  9. matlab运行出现profiler_加速你的MATLAB开发(3): 使用Profiler找出性能瓶颈
  10. 模板匹配 -提高计算速度