Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Есть ли в glib функции поиска файла по маске типа findfirst/findnext?  (Прочитано 1098 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн wl

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Искал в мануалах и в гугле, что-то не нашел.
Нашел просто получение списка файлов из каталога.
И нашел сравнение строки с регэкспом.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Нашли список файлов - записали в файл - в файле нашли нечто.
В чем вопрос-то ?
Понял, с 1 апреля !

Оффлайн wl

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Нет, мне нужно добыть список всех файлов по маске, с использованием glib.
Во всех высокоуровневых языках эта функция есть в библиотеках из коробки, в перле и питоне это glob, в C# тоже, вроде бы, есть что-то.
А вот в С нет...
« Последнее редактирование: 01 Апрель 2010, 14:45:37 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
popen("find тра-ля-ля") =)
знаю, знаю совсем не того хотелось.

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
popen("find тра-ля-ля") =)
знаю, знаю совсем не того хотелось.
По сравнению с readdir - это такой костыль...
P.S. Есть ещё scandir и fnmatch

Например:
#include <stdio.h>
#include <fnmatch.h>
#include <dirent.h>

main(int argc, char *argv[]) {
    char *pattern = "*.*";
    DIR *dir;
    struct dirent *entry;
    int ret;
    dir = opendir("/home/sova");

    while ((entry = readdir(dir)) != NULL) {
        ret = fnmatch(pattern, entry->d_name,
                FNM_PATHNAME | FNM_PERIOD);
        if (ret == 0) {
            printf("%s\n", entry->d_name);
        }
    }
    closedir(dir);
}
« Последнее редактирование: 01 Апрель 2010, 20:39:11 от Sova777 »
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн wl

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Про это знаю, мне бы средствами glib. Т.к. софт еще и под винду.
Ладно, придется использовать тамошний сканер директорий + проверку каждого имени файла на соответствие регэкспу.

(Нажмите, чтобы показать/скрыть)

Поиск по словам glib fnmatch дает ссылку на единственное письмо десятилетней давности, оставшееся без ответа: http://www.mail-archive.com/gtk-list@gnome.org/msg05958.html
« Последнее редактирование: 02 Апрель 2010, 12:26:14 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.057 секунд. Запросов: 24.