Форум программистов, компьютерный форум CyberForum.ru

Поиск слова в пачке файлов. - C++

Восстановить пароль Регистрация
 
drapoz
 Аватар для drapoz
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 7
07.02.2012, 13:12     Поиск слова в пачке файлов. #1
Привет народ. Помогите с решением проблемы.Задача такова ,существует папка с файлами количеством 1500 файлов, нужно найти слово "Visual C" и показать в каких файлах встречаетса это слово, ну или записать в файл их названия. Помогите или подскажите с помощью каких функций можно это реализовать, или может ссылочку . Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 13:12     Поиск слова в пачке файлов.
Посмотрите здесь:

поиск файлов C++
Поиск файлов C++
C++ поиск слова
C++ Поиск слова
C++ Поиск слова
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 13:28     Поиск слова в пачке файлов. #2
Цитата Сообщение от drapoz Посмотреть сообщение
Привет народ. Помогите с решением проблемы.Задача такова ,существует папка с файлами количеством 1500 файлов, нужно найти слово "Visual C" и показать в каких файлах встречаетса это слово, ну или записать в файл их названия. Помогите или подскажите с помощью каких функций можно это реализовать, или может ссылочку . Спасибо
- см сюда
поиск файлов по строкам
drapoz
 Аватар для drapoz
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 7
07.02.2012, 14:01  [ТС]     Поиск слова в пачке файлов. #3
Юра спасибо за ссылку , интересно , но как я понал там осуществляетса поиск по заданном имени файла, а у мени ситуация иная папка одна и файлов много имена разные каждый надо проверить на наличие слова. Это надо каждое имя забивать отдельно?
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 14:28     Поиск слова в пачке файлов. #4
Цитата Сообщение от drapoz Посмотреть сообщение
Юра спасибо за ссылку , интересно , но как я понал там осуществляетса поиск по заданном имени файла, а у мени ситуация иная папка одна и файлов много имена разные каждый надо проверить на наличие слова. Это надо каждое имя забивать отдельно?
- неверно ты понял - программа как раз ищет в каталоге файлы с вхождением данной строки, посмотри внимательно!Вот ещё раз отработка
Проверял работу на файле который прикладываю (скопировал в 2 подкаталога). Поиск длиться какое то премя, но всё отработало норм
[Результат работы]
Каталог для поиска:
[D:\MICROS~1]
Введите маску поиска
~Test*.txt
Введите текст поиска
TEST
Найден файл :[D:\MICROS~1\CyberForum\SearchMaskText\~TestFile~.txt]
Найден файл :[D:\MICROS~1\CyberForum\~TestFile~.txt]
Поиск не дал результатов
Y - Повторить поиск

Задание было более глубоким - файлы искались по шаблону, а уж в этих файлах строка, если бы шаблон записали *.* строка искалась бы во всех файлах...
drapoz
 Аватар для drapoz
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 7
08.02.2012, 11:37  [ТС]     Поиск слова в пачке файлов. #5
Харашо я посмотрю по внимательней , огромное спасибо за подказку и направление на путь истенный.

Добавлено через 19 часов 22 минуты
Юра , а на какой версии V.S ты код компилировал? А то у меня error на <iostream.h>, я содрал с V.S 6 папку include где есть эта h-ка и все остальные но после этого количество error увеличелось. Я и вариант <iostream> проверил но ошибки все на месте. Подскажи в чем фишка.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
08.02.2012, 11:41     Поиск слова в пачке файлов. #6
drapoz, тебе нужен аналог grep. Поищи исходники этой программы и посмотри как там реализовано.
drapoz
 Аватар для drapoz
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 7
08.02.2012, 12:11  [ТС]     Поиск слова в пачке файлов. #7
fasked, идея с исходниками это харашо , я бы и исходники Total Commandera взял и посмотрел , но кто мне их даст. grep это Linux аналог WinGrep но исходников я пока не нахожу.
-=ЮрА=-
Заблокирован
Автор FAQ
08.02.2012, 12:23     Поиск слова в пачке файлов. #8
drapoz, я писал под старый С++, запиши заголовки в новом стиле и вперёд, мне просто не охота садиться и убирать из проекта лишнее, в конце концов попробуй хоть немного подключить голову, как что то будет не получаться пиши...
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
08.02.2012, 13:32     Поиск слова в пачке файлов. #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <string>
#include <fstream>
#include <boost/filesystem.hpp>
#include <boost/program_options.hpp>
 
namespace fs = boost::filesystem;
namespace po = boost::program_options;
 
namespace
{
 
std::string directory;
std::string for_search_string;
 
void init_config(int argc, char* argv[])
{
   po::options_description desc("Program options");
   desc.add_options()
      ("help", "produce help message")
      ("directory,d", po::value<std::string>(), "dirrectory for search in")
      ("string,s", po::value<std::string>(), "string for search in files");
   po::variables_map vm;
   po::store(po::command_line_parser(argc, argv).options(desc).run(), vm);
   if ((vm.count("help") || (vm.count("directory") && vm.count("string"))) == 0)
   {
      throw std::logic_error("Config_error");
   }
   else
   {
      if (vm.count("help"))
      {
         std::cout << desc << std::endl;
      }
      else
      {
         directory = vm["directory"].as<std::string>();
         for_search_string = vm["string"].as<std::string>();
      }
   }
}
 
void search_in_dir()
{
   fs::path path(directory);
   for (fs::directory_iterator iter = fs::directory_iterator(path); 
        iter != fs::directory_iterator(); ++iter)
   {
      if (!fs::is_regular_file(iter->path()))
      {
         continue;
      }
      std::ifstream ifs(iter->path().string().c_str());
      std::string s;
      while (std::getline(ifs, s))
      {
         if (s.find(for_search_string) != std::string::npos)
         {
            std::cout << iter->path().string() << std::endl;
            break;
         }
      }
   }
}
 
}
 
int main(int argc, char* argv[])
{
   try
   {
      init_config(argc, argv);
   }
   catch (const std::logic_error& e)
   {
      std::cerr << "Wrong config. Use ./new --help" << std::endl;
      return 1;
   }
   if (directory.empty() || for_search_string.empty())
   {
      return 0;
   }
   search_in_dir();
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
forever@pterois:~/My_pro1/cpp_pro/tmp$ ls
file1  file2  file3
forever@pterois:~/My_pro1/cpp_pro/tmp$ cat file1
fashjfashjfhajsfhajhfjaVisualCsjdkskjfksjfksjfksjkaj;asfsf
forever@pterois:~/My_pro1/cpp_pro/tmp$ cat file2
fskjfksjkafjskajlfls
forever@pterois:~/My_pro1/cpp_pro/tmp$ cat file3
ksakjfsakfjaksfjkqajVisualC
forever@pterois:~/My_pro1/cpp_pro/tmp$ cd ../
forever@pterois:~/My_pro1/cpp_pro$ ./new -d /home/forever/My_pro1/cpp_pro/tmp/ -s VisualC
/home/forever/My_pro1/cpp_pro/tmp/file1
/home/forever/My_pro1/cpp_pro/tmp/file3
Ищет не обособленно стоящие, а так же в непрерывном тексте. Чтобы искало только обособленно стоящие нужно добавить всего 1 строчку.
drapoz
 Аватар для drapoz
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 7
09.02.2012, 20:25  [ТС]     Поиск слова в пачке файлов. #10
-=ЮрА=-, я воспользовался твоим советом, включил ее и все получилось, моему щастью нет границ. Огромное спасибо тебе и всем кто откликнулся на мой вопрос . drapoz .
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2012, 20:56     Поиск слова в пачке файлов.
Еще ссылки по теме:

C++ Поиск слова
C++ Поиск файлов
поиск слова C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 20:56     Поиск слова в пачке файлов. #11
Цитата Сообщение от drapoz Посмотреть сообщение
-=ЮрА=-, я воспользовался твоим советом, включил ее и все получилось, моему щастью нет границ. Огромное спасибо тебе и всем кто откликнулся на мой вопрос . drapoz .
- ну дык говорил там делов было на 5 мин работы
Yandex
Объявления
09.02.2012, 20:56     Поиск слова в пачке файлов.
Ответ Создать тему
Опции темы

Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru