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