Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3031923
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-06-30 11:38:02

假设文件夹a下有多个log文件,
1.log
2.log
3.log
……
现要求,如果某个log文件中存在 Normal termination 字段,则将该log文件mv到另一个文件夹b。

 

 

  1. ls *.log | xargs grep -l "Normal termination" | awk '{system("mv "$0" ../b")}

[解析]

  这个命令效率太低了,一开始我也是想到的awk的内置FILENAME参数,可以打印文件名,这样配合system()函数就可以移动文件了,但是匹配内容的行的想法没想出来。哎真笨啊,看到后面的帖子懂了。

  1. awk '/Normal termination/{system("mv "FILENAME" ../b")}' *.log
*.log文件其实可以这样作为最后的文件名来写,我怎么没想到呢。再给出黑哥的写法:
  1. mv -i $(grep -Frl --include=\*.log "Normal termination" .) ../b
阅读(5386) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~