24

I'm a linux newbie. I need to search for a string "teststring" in all *.java files coming under /home/user1/ (including subfolders). How can I do it in linux via shell command.

3
  • There have been several questions regarding regex searching files in subdirectories from the command-line – RobotHumans Nov 28 '10 at 15:12
  • a quick search turned up this question: superuser.com/questions/208271/… not exactly what you are looking for, but instead of exec cp you could cat/grep whatever – RobotHumans Nov 28 '10 at 15:16
  • I can list the file having the extension with find /home/user1 -name *.java How to use grep on that? – softwarematter Nov 28 '10 at 15:23
27

The easiest way is to use GNU grep's features:

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

If you're ever on another unix variant that doesn't have GNU grep, here's a portable way:

find /home/user1 -name '*.java' -exec grep teststring {} +
2
  • nice didn't know about this grep feature – RobotHumans Nov 28 '10 at 15:52
  • 2
    If you're searching the current dir and all files it's grep -r teststring . – Chris Moschini Jun 25 '14 at 17:16
5

using ack you just type: cd /home/user01 && ack --java teststring

1
  • 1
    or ack --java teststring /home/user01 – Andy Lester Dec 1 '10 at 3:43
5

For this ack aka ack-grep its the killer app in my mind ;)

You can ack some_string /in/path_y to find some_string in path_y Or simpler ack some_other_string to find some_other_sting in current dir.

3

Found it. Posting it as it might help someone.

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

Please correct if there is any better way.

1
  • 3
    Generally, you should use -print0 and -0 when piping find into xargs to work properly with files that may have spaces or newlines in their names: find /home/user01 -name *.java -print0 | xargs -0 grep "teststring" – Dennis Williamson Nov 28 '10 at 15:38
1
grep -irl teststring *java

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.