I have a bunch of files, I'd like to find the last match of a string in each of them.

grep text *.file gives me all the matches not the last ones.

ls *.file | xargs grep text | tail -n 1 gives me the last line of the last file that matches.

So what I think I want is a way to say:

ls *.file | (xargs grep text | tail -n 1)

But I'm not sure how to do this, or if it's possible.

link|improve this question

feedback

1 Answer

up vote 1 down vote accepted

Use tail -n 1 in a for loop. For example:

for name in *.file; do
    grep -H text "$name" | tail -n 1
done

(The -H option will make grep always print the file name, even if only one file was given.)

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.