From: bruce badouglas@gmail.com Subject: Re: tail for a list of files On Sun, Mar 4, 2018 at 2:31 PM, Joe Zeff joe@zeff.us wrote:
On 03/04/2018 11:15 AM, R. G. Newbury wrote:
find . -name "*.pdf" | tail -n 2 does not 'find' the files in canonical order: it outputs 124.pdf and 126.pdf
What does it print if you don't run it through tail?
um.. hey guys....
I wanted to get the last X lines of each file from an input/wildcard list of files !!
so.. I wanted the last 5 lines of the 126.pdf as well as the last 5 lines of the 125.pdf... --NOT the last X files from a list of files..
thanks
Ahh, well you should *said* so. We all went running off in all directions *at once*! This time I created 4 files 123.txt, 124.txt etc. each with 10 lines numbered 1 to 10
To get the last 5 lines of every ".txt" file Use: $ for file in $(find . -name "*.txt"); do cat $file | tail -n 5; done
To display the filename, and last 5 lines of each of the last 2 files Use: $ for file in $(find . -name "*.txt" | sort | tail -n 2); do echo $file; cat $file | tail -n 5; done
Output is: ./125.txt 7 8 9 10
./126.txt 7 8 9 10
YOu may have to be careful about the use of the 'sort' pipe: you may need to add a switch to enforce a particular sort order. Sort can leave you out of sorts that way.
Geoff