A maneira mais fácil é simplesmente salvar os nomes das partes resultantes em uma matriz, por exemplo,
splitarr=($output/FILENAME*)
e obtenha o comprimento da matriz (número de elementos) com ${#splitarr[@]} . Isso pressupõe que os únicos nomes de arquivos correspondentes a esse padrão sejam aqueles produzidos pelo comando split .
Parece que você está usando gnu split , e aqui estão outras maneiras de fazer isso: você pode adicionar a opção --verbose (consulte a página man para obter detalhes) e contar as linhas que split imprime em stdout e salve isso em uma variável:
ct=$(split --verbose --line-bytes=100M -d $input $output/FILENAME | wc -l)
Você pode obter o mesmo resultado com a opção menos conhecida --filter :
ct=$(split --filter='printf %s\n;cat >$FILE' --line-bytes=100M -d $input $output/FILENAME | wc -l)
Como alternativa, se você souber que somente o comando split criará arquivos nesse diretório nos próximos N segundos, poderá usar inotifywatch para reunir estatísticas para, por exemplo, close_write event:
inotifywatch . -t 20 -e close_write
assistirá o diretório atual para close_write eventos pelos próximos 20 segundos e exibirá algo como:
Establishing watches...
Finished establishing watches, now collecting statistics.
total close_write filename
11 11 ./
Portanto, é apenas uma questão de extrair esse número da tabela (por exemplo, canalizá-lo para awk 'END{print $2}' ; também tenha em mente que as duas primeiras linhas são impressas em stderr )