在Linux中搜索文本模式


20

我是linux新手。我需要在/ home / user1 /(包括子文件夹)下的所有* .java文件中搜索字符串“ teststring”。我该如何在Linux中通过Shell命令执行此操作。


关于命令行子目录中的正则表达式搜索文件,存在几个问题
RobotHumans 2010年

快速搜索出现了这个问题:superuser.com/questions/208271/…并非完全符合您的要求,但是可以代替执行cp来执行cat / grep命令
RobotHumans 2010年

我可以使用find / home / user1 -name * .java列出具有扩展名的文件。如何在上面使用grep?
darthvader

Answers:


23

最简单的方法是使用GNU grep的功能:

grep -r --include '*.java' teststring /home/user1

如果您正在使用另一个没有GNU grep的unix变体,这是一种可移植的方法:

find /home/user1 -name '*.java' -exec grep teststring {} +

很高兴不知道这个grep功能
RobotHumans 2010年

1
如果您正在搜索当前目录和所有文件,grep -r teststring .
则为


4

对于这个ACK又名ACK-用grep其杀手级应用在我的脑海;)

你可以ack some_string /in/path_y找到some_stringpath_y 或者更简单的ack some_other_string找到some_other_sting在当前目录下。


2

找到了。发布它可能会帮助某人。

find /home/user01 -name *.java | xargs grep "teststring"

如果有更好的方法,请更正。


3
一般情况下,你应该使用-print0-0管道时find进入xargs到正常工作与可能有空格或换行符在其名称中的文件:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
暂停,直至另行通知。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.