Как удалить несколько файлов в C, используя подстановочные знаки? - PullRequest
9 голосов
/ 28 января 2010

Есть ли способ в C удалить (используя remove()) несколько файлов, используя * (подстановочные знаки)? У меня есть набор файлов, которые все начинаются с индекса. Например: Index1.txt, Index-39.txt и т. Д. Все они начинаются с индекса, но я не знаю, какой текст следует. В этом же каталоге находятся и другие файлы, поэтому удаление всех файлов не будет работать.

Я знаю, что вы можете прочитать каталог, повторить каждое имя файла, прочитать первые 5 символов, сравнить и, если он подходит, удалить, но есть ли более простой способ (это то, чем я сейчас занимаюсь, кстати)?

Это стандарт C, так как код работает в Linux и Windows.

Ответы [ 3 ]

9 голосов
/ 28 января 2010

Как вы указали, вы можете использовать diropen, dirread, dirclose для доступа к содержимому каталога, свою собственную функцию (или преобразовать символы подстановки в регулярное выражение и использовать библиотеку регулярных выражений) для сопоставления и отсоединить для удаления. *

Нет стандартного способа сделать это проще. Скорее всего, будут библиотеки, но они не будут более эффективными, чем то, что вы делаете. Обычно функция поиска файла принимает обратный вызов, где вы предоставляете соответствующую часть кода и действия. Все, что вы сохраняете, это цикл.

6 голосов
/ 28 января 2010

Если вы не против конкретной платформы, вы можете использовать system() вызов:

system("del index*.txt"); // DOS
system("rm index*.txt"); // unix

Здесь - некоторая документация по вызову system(), который является частью стандартной библиотеки C (cstdlib).

0 голосов
/ 30 января 2010

Это все, что делает программа? Если это так, позвольте командной строке выполнить расширение подстановочного знака для вас:

int main(int argc, char* argv[])
{
   while (argc--)
     remove(argv[argc]);
}

в Windows вам нужно связать с setargv.obj, включенным в стандартный каталог VC lib.

...