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
)