Асинхронный поиск файлов по шаблону

C# Средний async

Задача «Асинхронный поиск файлов по шаблону»

Напишите асинхронную программу, которая принимает на вход корневую директорию и шаблон имени файла (с поддержкой '*' и '?'). Программа должна асинхронно обойти все поддиректории рекурсивно, найти все файлы, соответствующие шаблону, и вывести их полные пути. Для каждого найденного файла также необходимо асинхронно прочитать первые 1024 байта и вычислить их хэш SHA256 (в виде шестнадцатеричной строки). Вывод должен быть отсортирован по пути файла. Ограничения: количество файлов не превышает 1000, глубина вложенности до 10, размер файла может быть любым, но первые 1024 байта читаются всегда.

Формат ввода

Первая строка: корневая директория (абсолютный или относительный путь). Вторая строка: шаблон имени файла (может содержать '*' и '?').

Формат вывода

Для каждого найденного файла вывести строку: "<полный путь> <хэш SHA256 первых 1024 байт>". Строки отсортированы по пути в лексикографическом порядке. Если файл пустой, хэш считается от пустой строки.

Примеры

Пример 1

ВВОД
/tmp/testdir file?.dat
ВЫВОД

Пример 2

ВВОД
Programming is fun
ВЫВОД

Пример 3

ВВОД
3 1 2 3 4 5 6 7 8 9
ВЫВОД

Пример 4

ВВОД
hello world world java
ВЫВОД
main.cs