linux使用grep搜索文件里的内容,grep搜索文件名
如果你想在几个文本文件中查找一个字符串,你可以使用grep命令。Grep在文本中搜索指定的字符串。假设您正在/usr/src/linux/Documentation目录中搜索一个带有字符串magic的文件:
$ grep magic/usr/src/Linux/Documentation/*
sysrq.txt:*如何启用神奇的sysrq密钥?
sysrq.txt:*我如何使用神奇的sysrq密钥?
文件sysrp.txt包含这个字符串,并讨论了SysRQ的功能。默认情况下,grep只搜索当前目录。如果这个目录下有很多子目录,grep会如下列出:grep: sound:是一个目录
这可能会使grep的输出难以阅读。这里有两种解决方案:
明确要求搜索子目录:grep -r
或者忽略子目录:grep -d skip
当然,如果期望输出很多,可以通过管道传输到less并读取:$ grep magic/usr/src/Linux/documentation/* LESS
这样,你可以更方便地阅读。需要注意的一点是,必须提供文件过滤方法(如果搜索所有文件,请使用*)。如果忘记了,grep会一直等到程序中断。如果遇到这样的情况,按CTRL+c再试一次。
以下是一些有趣的命令行参数:
Grep -i模式文件:不区分大小写的搜索;默认情况下区分大小写
Grep -l特征码文件:仅列出匹配的文件名。
Grep -L特征码文件:列出不匹配的文件名。
Grep -w模式文件:只匹配整个单词,不匹配字符串的一部分(例如“magic”而不是“magic”)
Grep -C数字模式文件:匹配的上下文分别显示[数字]行。
Grepattern1 pattern2files:显示与模式1或模式2匹配的行。
Grepattern1files grepattern2:显示同时匹配模式1和模式2的行。
以下是一些用于搜索的特殊符号:
/和/分别标记单词的开头和结尾。
例如:
Grep man *会匹配蝙蝠侠,狂躁,男人等等,
Grep /man *匹配 manic 和 man ,但不匹配 Batman
Grep /man/只匹配 man ,不匹配 Batman 或 manic 等其他字符串
$ :指行尾的匹配字符串。
如果不习惯命令行参数,可以试试图形界面的grep,比如reXgrep这款软件提供了AND、OR、NOT等语法,以及漂亮的按钮。如果你只是需要更清晰的输出,试试fungrep。
转自:http://www.mcuos.com/viewthread.php? tid=10 extra=page=4