You can do a few things. `head` and `tail` are both spec'd to display the first/ten lines of a file by default - but if called w/ multiple arguments will do that for all and display the filenames between each. And, of course, for each, you can use the `-n[num]` argument to tailor how many lines are displayed. I assume your CTRL-C problem was related to the `-f` option - which would instruct `tail` to follow a file - you probably should just leave that out. Another thing you might do - which will result in output a little different than in the question, but which you might still like, is... grep -F '' *files `grep` is also spec'd to display the filename for its matches when it is given multiple filename arguments - but `grep` does it at the head of every line. Like seq 10 >nums.txt; grep -F '' /dev/null nums.txt ...which prints... nums.txt:1 nums.txt:2 nums.txt:3 nums.txt:4 nums.txt:5 nums.txt:6 nums.txt:7 nums.txt:8 nums.txt:9 nums.txt:10 ...and highlighted on my terminal. The `/dev/null` thing is just a little trick to force the multiple file arg behavior even when working with only a single file, and `grep -F ''` matches every line - even blank ones. And here's `head /dev/null nums.txt`: ==> /dev/null <== ==> nums.txt <== 1 2 3 4 5 6 7 8 9 10 `tail`'s output is identical in this case - but, again, both utilities only print so many lines of a file.