Files
CLARA/core/file_search.py
2025-10-29 12:04:43 +01:00

25 lines
775 B
Python

import shutil
import subprocess
import os
import platform
import fnmatch
def _find_native(pattern: str, root: str):
"""Native Python implementation of file search using os.walk."""
results = []
for dirpath, _, filenames in os.walk(root):
for filename in fnmatch.filter(filenames, pattern):
results.append(os.path.join(dirpath, filename))
return results
def find(pattern: str, root: str='/'):
path = os.path.expanduser(root)
if shutil.which('fd') is None:
return _find_native(f"*{pattern}*", path)
else:
try:
out = subprocess.check_output(['fd', pattern, path], text=True, errors='ignore')
return out.splitlines()
except subprocess.CalledProcessError:
return []