Basta executar wc -l
na saída para todos os arquivos:
#!/bin/bash -
files=(/share/capture/*.pcap)
for f in "${files[@]}"; do
tcpdump -qr "$f" 2> /dev/null
done | wc -l
Veja também:
capinfos -rTc "${files[@]}"
capinfos -rTc "${files[@]}" | cut -f2 | paste -sd + | bc
(assumindo que os nomes dos arquivos não contenham caracteres TAB ou NL).
Observe que o que você faz:
FILES=/share/capture/*.pcap
Você está atribuindo a string /share/capture/*.pcap
, não a lista de arquivos para $FILES
. Esse padrão glob é expandido quando $FILES
é referenciado sem aspas (o operador split + glob ). Posteriormente, você também deixa $f
sem aspas, então invoque novamente o operador split + glob. Portanto, se $f
continha caracteres em branco ou outros curingas, ele seria expandido para outros arquivos novamente. O melhor é usar uma matriz aqui e certifique-se de citar todas as suas variáveis.