O awk é um comando que é um interpretador de uma linguagem de programação destinada ao processamento de texto simples. Embora possa, na verdade não é para ser usado para chamar outros comandos como o comando head
.
Aqui, você pode fazer um shell fazer o trabalho:
find . -type f \( -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' \
-o -name '*.html' \) -exec sh -c '
for file do
IFS= read -r line < "$file" &&
case $line in
("#!"*) printf "%s\n" "$file: $line"
esac
done' sh {} +
Se você quisesse fazer isso com awk
, com GNU awk
:
find . -type f \( -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' \
-o -name '*.html' \) -exec awk '
/^#!/ {print FILENAME ": " $0}; {nextfile}' {} +
Com outros awk
s:
find . -type f \( -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' \
-o -name '*.html' \) -exec awk '
BEGIN {
for (i = 1; i < ARGC; i++)
if ((getline < ARGV[i]) > 0 && /^#!/)
print ARGV[i] ": " $0
exit
}' {} +