Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

What I am trying to do is do a search on my server to find which files contain mentions of images with a certain keyword in the filename but all I can figure out is how to find the filenams (not image specific), and not the files that contain references to them.

What I have tried is:

find -name *nasa*

but that's so far off what I'm looking for, any ideas?

share|improve this question
    
Are you trying to search files for a regex? A recursive grep -R is all you need. Or do you want help building the regex itself? We have no idea what these files you speak of look like, or the directory structure, so any additional information would be helpful. –  jw013 Nov 13 '12 at 17:25
    
@jw013 - I wanted to do a search recursively to check for any files using an image with a filename like nasa.extension and list the files that contained such a reference –  martincarlin87 Nov 13 '12 at 20:07

2 Answers 2

up vote 4 down vote accepted

With a modern implementation of grep:

grep -r nasa .

Here is a nasty way to check if it looks like an image filename:

grep -rE 'nasa[[:alnum:] ]*\.(jpe?g|png|gif|tif)' .

There are some obvious caveats (the biggest one being that it only allows alphanumeric characters and spaces in the filename to avoid false positives with syntax).

Although that said, if this is HTML or something, you'd be better to use a parser.

share|improve this answer
    
thanks, just trying it out –  martincarlin87 Nov 13 '12 at 16:30
    
is there anyway to limit the results to the filenames with references to images with 'nasa' in their filename? A bit tricky I think but just wondering if it's possible –  martincarlin87 Nov 13 '12 at 16:32
1  
@martincarlin87 if you want accurate regex examples, always provide an example of what you are trying to match. We have no idea what "references" means in the context of your files. –  jordanm Nov 13 '12 at 16:36
    
@martincarlin87 Updated my answer, would be nice if you specified what a "reference" was. –  Chris Down Nov 13 '12 at 16:38
    
sorry, I'll try to be specific. So, starting from the current directory and searching recursively, output the names of any files found to contain *nasa*.png|jpg|gif - does it make more sense now? –  martincarlin87 Nov 13 '12 at 16:38

Try this with appropriate replacements per your requirements:

find /path/to/ -type f -exec grep -i 'string' {} +
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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