有时候想在代码中执行某个关键词,会用下面的语句:

find . -type f -name "*.java" | xargs grep -n "<keyword>"

大部分情况下良好,但也有出问题的时候,比如某个目录中含有空格。那么检索这个目录下所有的文件都会报错。为此,需要改一下脚本,将路径放到引号中。

find . -type f -name "*.java" | xargs -I {} grep -n "<keyword>" "{}"

这样又出现了新的问题:结果中都没有命中文件的文件名了。只有行号和命中行的内容。像下面这样:

:123   public class xxxxxx...

没错,我用的是 cygwin. 上面的命令在 linux 下是没有问题的。但在 cygwin 下不行。即使在find中加上 -print 也无济于事。

不过,用另一个参数可以解决这个问题,即 print0,脚本如下:

find . -type f -name "*.java" -print0 | xargs -0 grep -n "<keyword>"

xargs -0 大意是让输入项以 \0 作为分隔,而不是以空白符号。-print0 和 -0 配合使用。带空格的路径再不会被当作多个输入项了。

接下来考虑完善这个命令,如果想同时检索以 .java, .xml, .jsp 等结束的文件。该怎么办叫做?

find . -type f -name "*.java" -print0 -o -name "*.xml" -print0 -o -name "*.jsp" -print0 | xargs -0 grep -n "<keyword>"

然后在 .bashrc 中给这个命令起个别名:

alias grepj='find . -type f -name "*.java" -print0 -o -name "*.xml" -print0 -o -name "*.jsp" -print0 | xargs -0 grep -n'

命名就简化成 grepj keyword,这样就完美了。

注意每一个检索条件后都要跟一个 -print0 参数。

解决grep的结果无法显示文件名的问题的更多相关文章

  1. Ubuntu下解决解压zip文件中文文件名乱码问题

    在Ubuntu下解压Windows下压缩的zip文件时,会出现解压出的带中文文件名的文件名乱码,这是因为Ubuntu和Windows默认的编码不同,Ubuntu下默认的编码是UTF-8,而Window ...

  2. 完美解决,浏览器下拉显示网址问题 | 完美解决,使用原生 scroll 写下拉刷新

    在 web 开发过程中我们经常遇到,不想让用户下拉看到我的地址,也有时候在 div 中没有惯性滚动,就此也出了 iScroll 这种关于滚动条的框架,但是就为了一个体验去使用一个框架好像又不值得,今天 ...

  3. 解决 PHPExcel 长数字串显示为科学计数

    解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...

  4. 解决dede搜索页面只能显示10条信息解决方案

    解决dede搜索页面只能显示10条信息解决方案,感觉显示的信息太少,这时就要想办法去解决一下.看看有什么好办法来解决一下这个问题. dede搜索页模板中,默认只能显示10条记录. 打开dede搜索页模 ...

  5. 解决每次打开office 2010显示正在配置的问题

    解决每次打开office 2010显示正在配置的问题 OFFICE 2010 MSDN版出来后,下载安装 ,启动后发现每次打开都会出现“正在配置”的进度,删除重装亦不成功,对SETUP.EXE改名也不 ...

  6. 解决django关于图片无法显示的问题

    http://python.usyiyi.cn/django/index.html http://m.blog.csdn.net/blog/qingyuanluofeng/44877399 http: ...

  7. 解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168

    目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...

  8. Html中DIV成为超级链接,解决在360浏览器+IE9显示小手图标的兼容性!

    Html中DIV成为超级链接,解决在360浏览器+IE9显示小手图标的兼容性! <div style="cursor:pointer;" onclick="sele ...

  9. 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录

    解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区  作者:njchenyi [字体:大 中 小]   我是先安装了Ubuntu 12.04 Server,然后 ...

随机推荐

  1. [原创]Java中字符串、数组、集合及JSONArray的长度属性

    前言:数组没有length()这个方法,有length的属性.String有有length()这个方法. 1.String字符串 String str = "abcdefg";st ...

  2. 工作流 jBMP4.4表结构

    (一)资源库和运行时表结构       JBPM4_DEPLOYMENT,      JBPM4_DEPLOYPROP,      JBPM4_LOB 存储流程定义相关的部署信息       JBPM ...

  3. Trie 图

    时间限制:20000ms 单点时限:1000ms 内存限制:512MB 描述 前情回顾 上回说到,小Hi和小Ho接受到了河蟹先生伟大而光荣的任务:河蟹先生将要给与他们一篇从互联网上收集来的文章,和一本 ...

  4. mysql memory存储引擎简单测试

    Auth: jin Date: 20140423 mysql> CREATE TABLE `t4` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` ...

  5. POJ 2187 Beauty Contest (求最远点对,凸包+旋转卡壳)

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 24283   Accepted: 7420 D ...

  6. Sysfs文件系统与Linux设备模型

    转:http://www.360doc.com/content/11/1218/16/1299815_173168170.shtml sysfs把连接在系统上的设备和总线组织成为一个分级的目录及文件, ...

  7. zk常见面试题

    一个客户端修改了某个节点的数据,其它客户端能够马上获取到这个最新数据吗 ZooKeeper不能确保任何客户端能够获取(即Read Request)到一样的数据,除非客户端自己要求:方法是客户端在获取数 ...

  8. 二十四种设计模式:工厂方法模式(Factory Method Pattern)

    工厂方法模式(Factory Method Pattern) 介绍定义一个用于创建对象的接口,让子类决定将哪一个类实例化.Factory Method使一个类的实例化延迟到其子类. 示例有SqlMes ...

  9. LESS,强大的CSS预处理语言

    虽然写的css不多,但是我已经切身感觉到了书写css的恶心...抛开最令人烦的浏览器兼容问题不说,这个语言本身就有不少问题. 最简单的,比如多个地方是同一个颜色的,如果可以写在一个样式里还没什么,但是 ...

  10. [Todo]Redis & Mysql可以看的书籍

    Redis实战(我下的版本是网络版,还有一版是黄健宏翻译的版本,正在找) 高性能Mysql第三版 都在目录: /Users/baidu/Documents/Data/Interview/存储-Nosq ...