Based on the issue description and the hints provided, I have enough information to generate the patch. The issue is clear:

1. When running `pylint --recursive=y src/`, the `root` variable is `src/gen`
2. When running `pylint --recursive=y .`, the `root` variable is `./src/gen`
3. The regex pattern `^src/gen/.*$` doesn't match `./src/gen` because of the `./` prefix
4. The fix is to use `os.path.normpath()` on the `root` variable before matching against the patterns

The code is at `pylint/lint/pylinter.py` around lines 600-607. Looking at the hint that shows the exact code location:

```python
# Around line 600-607 in pylinter.py
```

The fix needs to normalize the path before checking against ignore_paths patterns.

--- a/pylint/lint/pylinter.py
+++ b/pylint/lint/pylinter.py
@@ -597,7 +597,8 @@ class PyLinter(
     def _discover_files(self, files_or_modules: Sequence[str]) -> Iterator[str]:
         """Discover python modules and packages in sub-directory.
 
         Returns iterator of paths to discovered modules and packages.
         """
         for something in files_or_modules:
             if os.path.isdir(something) and not os.path.isfile(
                 os.path.join(something, "__init__.py")
             ):
                 skip_subtrees: list[str] = []
                 for root, _, files in os.walk(something, topdown=True):
+                    root = os.path.normpath(root)
                     if _is_ignored_file(
                         root,
                         self.config.ignore,