Как отсортировать по алфавиту вывод содержимого директории. C(Си)

При определенных обстоятельствах мне нужно получить список всех файлов из директорий, которые указаны в переменной окружения $PATH в linux и выводить их на экран последовательно.

Если открыть директорию с помощью opendir, а затем использовать readdir до NULL, то вывод имен файлов будет не отсортирован.

При нажатии tab с пустой строкой, установленный shell в linux выдает список всего "запускаемого" из переменной окружения $PATH и этот список отсортирован по алфавиту!

Вопрос в следующем: как грамотно это всё отсортировать по имени, а потом вывести? Как это делает тот же установленный shell в linux? Там будет более 2000 имен различной длинны...

Есть предположение:

  1. Проверить количество всех файлов во всех директориях, выделить память под массив строк, снова идти по всем директориям добавляя каждое имя в массив, а затем отсортировать, потом выводить.
  2. Нужно открыть сразу все директории из path, и на каждый итерации делать readdir из каждой директории до NULL, выбирать нужное имя, сравнивать с остальными, выводить, и снова и снова, зафиксировав уже выведенное имя и это кошмар в общем да...

Какой еще вариант может быть?


Ответы (0 шт):