Как отсортировать по алфавиту вывод содержимого директории. C(Си)
При определенных обстоятельствах мне нужно получить список всех файлов из директорий, которые указаны в переменной окружения $PATH в linux и выводить их на экран последовательно.
Если открыть директорию с помощью opendir, а затем использовать readdir до NULL, то вывод имен файлов будет не отсортирован.
При нажатии tab с пустой строкой, установленный shell в linux выдает список всего "запускаемого" из переменной окружения $PATH и этот список отсортирован по алфавиту!
Вопрос в следующем: как грамотно это всё отсортировать по имени, а потом вывести? Как это делает тот же установленный shell в linux? Там будет более 2000 имен различной длинны...
Есть предположение:
- Проверить количество всех файлов во всех директориях, выделить память под массив строк, снова идти по всем директориям добавляя каждое имя в массив, а затем отсортировать, потом выводить.
- Нужно открыть сразу все директории из path, и на каждый итерации делать readdir из каждой директории до NULL, выбирать нужное имя, сравнивать с остальными, выводить, и снова и снова, зафиксировав уже выведенное имя и это кошмар в общем да...
Какой еще вариант может быть?