Solved

grep: *.java: No such file or directory

Posted on 2003-10-28
21
1,160 Views
Last Modified: 2013-11-13
Can anyone tell me why I get this infuriating error message when I issue this command?

grep -rl implements *.java

Surely I don't need to use an additional command?

I'm using GNU grep 2.4.2
0
Comment
Question by:CEHJ
  • 6
  • 5
  • 3
  • +5
21 Comments
 
LVL 5

Expert Comment

by:willy134
ID: 9636889
I believe it is looking for a directory called something.java  why don't you use

grep -rl implements * | grep java

Good Luck
willy
0
 
LVL 1

Expert Comment

by:MJoyce
ID: 9639234

Or try

grep -rl implements *java

presumably you do have some files where the names end in java ?

Matt
0
 
LVL 86

Author Comment

by:CEHJ
ID: 9640679
>>presumably you do have some files where the names end in java ?

Of course ;-) btw I've already tired that (I think). I'll try it again to be sure. Why won't a glob work though?

Don't tell me I really *have* to do something like

grep -rl implements `find . -name *.java`

?
0
 
LVL 86

Author Comment

by:CEHJ
ID: 9640836
willy134 i missed you comment at first

>>grep -rl implements * | grep java

Is something quite different ;-) And I don't want grep looking in all files
0
 
LVL 86

Author Comment

by:CEHJ
ID: 9640902
>>Is something quite different

Let me qualify that. It will have the same *effect* as I'm looking for (although the second re should really be qualified by the line end) but why give the first grep the unnecessary overhead of searching all files?
0
 

Expert Comment

by:jetstream
ID: 9641692
Try
grep -rl implements */*.java
0
 
LVL 86

Author Comment

by:CEHJ
ID: 9641756
That won't cut it - it excludes the current directory
0
 
LVL 20

Expert Comment

by:Gns
ID: 9644471
The problem is _where_ the glob is expanded (and who does the expansion... namely the shell)... As you write it, it'll just expand in "." and include anything (files or directories) ending in .java ... You should be using the --include=<glob> instead:
grep -rl --include=\*.java implements .

-- Glenn
0
 
LVL 20

Expert Comment

by:Gns
ID: 9644506
Ooops, that was for gnu grep version 2.5.1 ... 2.4.2 doesn't have it, so unless you'd fancy an upgrade, the find/grep combo is it.

-- Glenn
0
 
LVL 61

Expert Comment

by:gheist
ID: 9644720
or you can type
set -o noglob
grep with dangerous wildcard*
set +o noglob
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 3

Expert Comment

by:guynumber5764
ID: 9646256
does "ls *.java" give you the same message?

(that might answer your question)

Also, I always keep a few one-line scripts to the effect of:

find / -name "$1" -print 2>/dev/null
and
find / -exec grep "$1" {} \; 2>/dev/null

lying around.  I won't swear to the syntax but you get the idea.
0
 
LVL 3

Expert Comment

by:guynumber5764
ID: 9646294
Ignore the bonehead (ls) part of my prev post and try;

find . -name "*.java" -exec grep implements {} \; -print

it'll get you into the neighbourhood (if the quotes on the -exec are right)
0
 
LVL 20

Expert Comment

by:Gns
ID: 9649436
That "find ... -exec ..." is worse in one respect, and better in one that the "grep ... `find ...`". Worse in the excessive fork/exec, and better sine it avoids any commandline lenght/number of parameters issues. The best on this account would be
find . -name \*.java -print | xargs grep implements
but CEHJ states s/he doesn't want that.... so then the only way would be to upgrade to a gnu grep that will allow the --include= thing (as in 2.5.1).

I think that just officially beat this question to death...:-)

-- Glenn
0
 
LVL 20

Accepted Solution

by:
Gns earned 50 total points
ID: 9649462
"one that the" -> "one than the"
"better sine" -> "better since"
"find . -name \*.java -print | xargs grep implements" -> "find . -name \*.java -print | xargs grep -l implements"

... So many errors in such a short comment... And then one wonders where there are such an abundance of bugs:-)

-- Glenn (a.k.a. Le Grand Typo)
0
 
LVL 86

Author Comment

by:CEHJ
ID: 9649989
>>so unless you'd fancy an upgrade

Would that easy enough to do?
0
 

Expert Comment

by:jetstream
ID: 9649990
This works for me. And it's not long winded.

grep -l implements `find . -name *.java`
0
 
LVL 20

Expert Comment

by:Gns
ID: 9650253
.... And it has already been suggested (as not feasible... by CEHJ... and do read my comment on it's merits/non-merits (implied by the find ... -exec ... comment)) jetstream.

CEHJ: Well, that depends a little on distro etc. You could very well just build it from source (grab it from a gnu-mirror... or ftp://ftp.gnu.org/gnu/grep note that only the source rpm is "there" ATM, since they are confirming that noone has ...manipulated the tar-files. I'd guess 2.5 would be fine too. If youbuild it from source, it is often prudent to install to "an alternate location" than the distros "normal location", or removing the grep package altogether before running make install...
Or you might have an "update" for your distro... If it is rpm-based, http://www.rpmfind.net might be a help... or just apt-get for Debian... As I said, it depends:-).

-- Glenn
0
 
LVL 3

Expert Comment

by:guynumber5764
ID: 9653044
jet & gns... I guess I'll be tweaking my find scripts this aft.
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 9673940
didn't read all the comments, so please be patient if my suggestion still have been done:

  grep -rl implements *

or:

  grep -rl implements *|grep java
0
 
LVL 20

Expert Comment

by:Gns
ID: 9676970
> grep -rl implements *
Too "inclusive" ... Not limited to results in .java files;-)

> grep -rl implements *|grep java
The first comment (by willy134) mention this... You're a man by your word Achim, you really didn't read all the comments:-):-)
Nice seeing you active again though;-).

-- Glenn
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 9677091
dooh, the very first comment unread by me, and I've some more daylight hours than Gns ;-)
Skol
0

Featured Post

Complete Microsoft Windows PC® & Mac Backup

Backup and recovery solutions to protect all your PCs & Mac– on-premises or in remote locations. Acronis backs up entire PC or Mac with patented reliable disk imaging technology and you will be able to restore workstations to a new, dissimilar hardware in minutes.

Join & Write a Comment

One of the major drawbacks of deploying applications by GPO is the complete lack of any centralized reporting. After a normal deployment, there are two ways to find out if it was successful – by looking in the event log, and by looking in the log of…
Introduction We as admins face situation where we need to redirect websites to another. This may be required as a part of an upgrade keeping the old URL but website should be served from new URL. This document would brief you on different ways ca…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now