Você só poderia usar grep
para fazer isso. O segundo grep
é filtrar arquivos sem correspondência.
grep -rc 'Author' ${1} | grep -v ':0$'
Isto é o que eu tenho atualmente, no entanto, ele imprime o número total de vezes Autor aparece em todos os arquivos: 128367
grep -roh 'Author' $1 | wc -w
No entanto, como imprimo a contagem de palavras para cada arquivo separadamente?
Também o argumento que está tomando é uma pasta com os arquivos.
Você só poderia usar grep
para fazer isso. O segundo grep
é filtrar arquivos sem correspondência.
grep -rc 'Author' ${1} | grep -v ':0$'
Repasse os arquivos:
for file in "$1"/* ; do
if [[ -f "$file ]] ; then
printf %s: "$file"
grep -o Author "$file" | wc -w
fi
done
Você também pode usar o Perl:
perl -lne 'BEGIN { $c = 0 }
$c++ while /Author/g;
if (eof) { print "$ARGV: $c"; $c=0 }
' "$1"/*
Com o GNU Parallel:
parallel --tag 'grep -oh Author {} | wc -w' ::: *.dat
Se houver subdiretórios:
find . -name '*.dat' | parallel --tag 'grep -oh Author {} | wc -w'
Tags bash grep shell-script