I'm trying to run a command on every file within a directory (recursively) that matches a pattern. I need the filename of each item that matches for the command however. This is how far I've got:

find . -name '*.jar'

That gives me all the files I'm interested in. Now, I need to run the following command on all those files:

jarsigner -keystore ***** -storepass ****** $FILENAMEHERE

How do I reference the individual items in the output of find, for the command?

link|improve this question

75% accept rate
feedback

3 Answers

up vote 1 down vote accepted
for i in `find . -name '*.jar'` ; do jarsigner -keystore ***** -storepass ****** $i ; done
link|improve this answer
feedback

If jarsigner takes only one file name at a time, use either

find . -iname '*.jar' | xargs -l jarsigner -keystore ***** -storepass ******

or

find . -iname '*.jar' -exec jarsigner -keystore ***** -storepass ***** {} \;
link|improve this answer
Yes, xargs makes things more readable! However the man says the '-l' option is deprecated: '-L 1' should do the same. – cYrus Aug 19 '10 at 9:23
feedback
find . -iname '*.jar' | xargs jarsigner -keystore ***** -storepass ******
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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