This is a quick post to show a trick to tail multiple files, while showing the filename in the beginning of the line
What I needed was a way to grep multiple logs for an exception. But doing “tail -f *.log | grep exception” only let me see the exception, but I didn’t know which log file to look in
I have found this guide, and altered the script and added
- Printing the file name in the beginning of each line
- Padding spaces after the file name (you can alter the minimal length in the ALIGN variable
Anyway – here’s the script. Hope you find it useful
#!/bin/bash # When this exits, exit all back ground process also. trap 'kill $(jobs -p)' EXIT ALIGN=31 # iterate through the each given file names, for file in "$@" do LENGTH=`echo ${file} | wc -c` PADDING=`expr ${ALIGN} - ${LENGTH}` PAD=`perl -e "print ' ' x $PADDING;"` # show tails of each in background. tail -f $file | sed "s/^/${file}${PAD}:/g" & done # wait .. until CTRL+C wait