Рекурсивный поиск слова в файлах директории
Описание
Программа wordsearch на языке C рекурсивно обходит заданную директорию и её вложенные каталоги (включая скрытые, начинающиеся с точки) и ищет указанное слово во всех текстовых файлах. При обнаружении выводятся полный путь к файлу, номер строки и сама строка с найденным словом.
Требования
- Директория поиска передаётся первым аргументом командной строки (по умолчанию
~). - Слово для поиска передаётся вторым аргументом командной строки.
- Поддерживается флаг
-iдля игнорирования регистра. - Обрабатываются скрытые файлы и директории.
- Корректная обработка ошибок (отсутствие директории, ошибки доступа).
Сборка
make
Запуск
# По умолчанию ищет в ~:
./wordsearch искомое_слово
# В указанной директории:
./wordsearch /путь/к/директории искомое_слово
# С игнорированием регистра:
./wordsearch -i /путь/к/директорий ИскОмоЕ_СлОвО
Пример вывода
/home/user/files/document.txt:12: Эта строка содержит искомое_слово.
/home/user/files/.hidden_folder/notes.txt:45: Здесь также есть искомое_слово.
Реализация
Файл wordsearch.c реализует следующие функции:
process_dir(const char *path)— рекурсивный обход директории.search_file(const char *filepath)— построчное чтение черезfgetsи поиск с помощьюstrstrилиstrcasestr.- Парсинг аргументов командной строки, установка флага
ignore_case.
Дополнительное задание 1: игнорирование регистра (-i)
Флаг -i: сравнение сделано через tolower.
Дополнительное задание 2: использование mmap
Доступ к файлам через отображение-в-память сделан.
Description
Languages
C
94.5%
Makefile
5.5%