Pesquisa assíncrona de arquivos por padrão
C#
Medium
async
Tarefa «Pesquisa assíncrona de arquivos por padrão»
Escreva um programa assíncrono que recebe como entrada um diretório raiz e um padrão de nome de arquivo (com suporte a '*' e '?'). O programa deve percorrer assincronamente todos os subdiretórios recursivamente, encontrar todos os arquivos que correspondem ao padrão e exibir seus caminhos completos. Para cada arquivo encontrado, também é necessário ler assincronamente os primeiros 1024 bytes e calcular seu hash SHA256 (como uma string hexadecimal). A saída deve ser ordenada pelo caminho do arquivo. Limitações: o número de arquivos não excede 1000, a profundidade de aninhamento é de até 10, o tamanho do arquivo pode ser qualquer um, mas os primeiros 1024 bytes são sempre lidos.
Formato de Entrada
Primeira linha: diretório raiz (caminho absoluto ou relativo). Segunda linha: padrão de nome de arquivo (pode conter '*' e '?').
Formato de Saída
Para cada arquivo encontrado, exibir uma linha: "<caminho completo> <hash SHA256 dos primeiros 1024 bytes>". As linhas são ordenadas pelo caminho em ordem lexicográfica. Se o arquivo estiver vazio, o hash é calculado a partir de uma string vazia.
Exemplos
Exemplo 1
ENTRADA
/tmp/testdir
file?.dat
SAÍDA
Exemplo 2
ENTRADA
Programming is fun
SAÍDA
Exemplo 3
ENTRADA
3
1 2 3
4 5 6
7 8 9
SAÍDA
Exemplo 4
ENTRADA
hello world
world
java
SAÍDA
main.cs