Búsqueda asíncrona de archivos por patrón

C# Medium async

Tarea «Búsqueda asíncrona de archivos por patrón»

Escriba un programa asíncrono que reciba como entrada un directorio raíz y un patrón de nombre de archivo (con soporte para '*' y '?'). El programa debe recorrer asíncronamente todos los subdirectorios de forma recursiva, encontrar todos los archivos que coincidan con el patrón y mostrar sus rutas completas. Para cada archivo encontrado, también se deben leer asíncronamente los primeros 1024 bytes y calcular su hash SHA256 (como una cadena hexadecimal). La salida debe estar ordenada por la ruta del archivo. Restricciones: el número de archivos no supera los 1000, la profundidad de anidamiento es de hasta 10, el tamaño del archivo puede ser cualquiera, pero siempre se leen los primeros 1024 bytes.

Formato de entrada

Primera línea: directorio raíz (ruta absoluta o relativa). Segunda línea: patrón de nombre de archivo (puede contener '*' y '?').

Formato de salida

Para cada archivo encontrado, mostrar una línea: "<ruta completa> <hash SHA256 de los primeros 1024 bytes>". Las líneas están ordenadas por ruta en orden lexicográfico. Si el archivo está vacío, el hash se calcula a partir de una cadena vacía.

Ejemplos

Ejemplo 1

ENTRADA
/tmp/testdir file?.dat
SALIDA

Ejemplo 2

ENTRADA
Programming is fun
SALIDA

Ejemplo 3

ENTRADA
3 1 2 3 4 5 6 7 8 9
SALIDA

Ejemplo 4

ENTRADA
hello world world java
SALIDA
main.cs