#include <iostream>
#include <filesystem>
#include <fstream>
#include <string>
namespace fs = std::filesystem;
// Funkcja sprawdzająca, czy plik zawiera dany ciąg znaków
bool containsString(const fs::path& filePath, const std::string& searchString) {
std::ifstream file(filePath);
if (!file) return false; // Nie udało się otworzyć pliku
std::string line;
while (std::getline(file, line)) {
if (line.find(searchString) != std::string::npos) {
return true;
}
}
return false;
}
// Funkcja przeszukująca foldery i podfoldery
void searchFiles(const fs::path& directory, const std::string& searchString) {
try {
for (const auto& entry : fs::recursive_directory_iterator(directory)) {
if (entry.is_regular_file()) { // Sprawdzamy tylko pliki
if (containsString(entry.path(), searchString)) {
std::cout << "Znaleziono w pliku: " << entry.path() << '\n';
}
}
}
} catch (const std::exception& e) {
std::cerr << "Błąd: " << e.what() << '\n';
}
}
int main() {
std::string folderPath, searchString;
std::cout << "Podaj ścieżkę do folderu: ";
std::getline(std::cin, folderPath);
std::cout << "Podaj szukany ciąg znaków: ";
std::getline(std::cin, searchString);
if (!fs::exists(folderPath) || !fs::is_directory(folderPath)) {
std::cerr << "Podana ścieżka nie istnieje lub nie jest folderem." << std::endl;
return 1;
}
searchFiles(folderPath, searchString);
return 0;
}