I want to output top 10 lines of AWK command in the list of files given by find,
using this snippet:
$ find . -name "*.txt" -print -exec awk '$9 != ""' \| head -n10 {} \;
Note also that I want to print out the file names being processed.
But why I get such error:
awk: cmd. line:2: fatal: cannot open file `|' for reading (No such file or directory)
./myfile.txt
What's the right way to do it?
I tried without backslash before the pipe. Still it gave an error:
find: missing argument to `-exec'
head: cannot open `{}' for reading: No such file or directory
head: cannot open `;' for reading: No such file or directory
Best Answer
When running a command with find's -exec, you don't get all the nice shell things like the pipe operator (|). You can regain them by explicitly running a subshell if you like though, eg:
find . -name '*.txt' -exec /bin/sh -c "echo a text file called {} | head -n 15" \;