How to search multiple jar files for a string or pattern (shell script)

Here’s a Unix shell script that I use that search Java “jar” files for any type of pattern. You can use it to search for the name of a class, the name of a package, or any other string/pattern that will show up if you manually ran jar tvf on each jar file. The advantage of this script — if you’re a Unix, Linux, or Cygwin user — is that it will search through all jar files in the current directory:

Using find and grep to print lines before and after what you're searching for alvin April 17, 2013 - 5:18pm

I just used this combination of a Unix/Linux find command with a grep command to search for all Scala files under the current directory that contain the string null. This command prints five lines before and after each null line in each file:

A collection of Unix/Linux find command examples

Linux/Unix FAQ: Can you share some Linux find command examples?

Sure. The Unix/Linux find command is very powerful. It can search the entire filesystem to find files and directories according to the search criteria you specify. Besides using the find command to locate files, you can also execute other Linux commands (grep, mv, rm, etc.) on the files and directories you find, which makes find extremely powerful. 

Recursive grep searching with grep -r (like grep with find) alvin December 16, 2011 - 9:06am

Linux grep FAQ: How can I perform a recursive search with the grep command?

For years I've always used variations of the following Linux find and grep commands to recursively search subdirectories for files that match a grep pattern:

Unix/Linux grep command examples

Linux grep commands FAQ: Can you share some Linux/Unix grep command examples?

Sure. The name grep means "general regular expression parser", but you can think of the grep command as a "search" command for Unix and Linux systems: it's used to search for text strings and more-complicated "regular expressions" within one or more files.

I think it's easiest to learn how to use the grep command by showing examples, so let's dive right in.

An egrep example with multiple regular expressions alvin May 20, 2011 - 3:43pm

Summary: How to use the Linux egrep command with multiple regular expressions (regex patterns).

As a quick note here today, I just used the Linux egrep command to perform a case-insensitive search on multiple regular expressions (regex patterns). Really, what I did was a little more complicated:

locate -i calendar | grep Users | egrep -vi 'twiki|gif|shtml|drupal-7|java|PNG'

As you can see from that command, I did this:

Perl grep array FAQ - How to search an array/list of strings alvin May 20, 2011 - 2:32pm

Perl "grep array" FAQ: Can you demonstrate a Perl grep array example? (Related: Can you demonstrate how to search a Perl array?)

A very cool thing about Perl is that you can search lists (arrays) with the Perl grep function. This makes it very easy to find things in large lists -- without having to write your own Perl for/foreach loops.

A Perl array 'contains' example

Perl array FAQ: How can I test to see if a Perl array already contains a given value? (Also written as, How do I search an array with the Perl grep function?)

I use the Perl grep function to see if a Perl array contains a given entry. For instance, in this Perl code:

Use zgrep to grep a gzip (gz) file

Linux zgrep FAQ: How do I use the Linux zgrep command? (Or, How do I grep a GZ file?)

Linux users quickly learn how to use the Linux grep command on plain text files, but it takes a little longer to really you can grep gzip (gz) files as well. Here's how.

Linux find error - missing argument to -exec

Help, I just got this Linux find error - "Missing argument to -exec".

I just issued a Linux find command, and got the following error message:

find: missing argument to -exec

Amazingly, it turns out that the computer is right, and I messed up my command. I entered my find command like this:

find . -type f -exec grep -il mail

That's the way I want to type this command, but the correct way to type it is to add the extra characters at the end of the command, like this: