def find(path, crossmount=True): dev = os.stat(path).st_dev try: for entry in os.scandir(path): if entry.is_dir() and not entry.is_symlink(): if not crossmount and entry.stat().st_dev != dev: continue for result in find(entry.path, crossmount=crossmount): yield result yield entry else: yield entry except OSError as e: print(e, file=sys.stderr) # Search suid files for suid in (f.path for f in find('/home/gigix', crossmount=False) if f.is_file() and f.stat().st_mode & stat.S_ISUID == stat.S_ISUID) print(suid)