A Go package for concurrent filesystem traversal with flexible filtering options.
Skywalker is a Go package that enables concurrent filesystem traversal with built-in filtering capabilities. It allows developers to efficiently walk through directories, process files, and apply filters like blacklists, whitelists, and glob patterns to control which files are included or excluded.
Go developers who need to perform efficient filesystem operations, such as scanning directories, processing large sets of files, or building tools that require customizable file filtering.
Developers choose Skywalker for its simplicity, concurrency support, and flexible filtering options, making it a lightweight and efficient alternative to standard Go filesystem walking methods for complex traversal tasks.
A package to allow one to concurrently go through a filesystem with ease
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Processes multiple files and directories simultaneously, as highlighted in the README, which significantly boosts performance for large-scale scans compared to standard sequential walks.
Supports blacklist/whitelist filtering for directories and extensions, plus glob patterns via gobwas/glob, allowing precise control over which files are included or excluded during traversal.
Offers a straightforward interface with configurable lists (DirList, ExtList) and a Work function, making it easy to integrate for custom file processing tasks, as shown in the example code.
Uses gobwas/glob for pattern matching and recommends '/' for paths, ensuring consistent behavior across different operating systems, though this requires careful path handling.
Requires users to define their own Work function for file processing, adding boilerplate code and complexity compared to more integrated libraries that offer out-of-the-box operations.
The README mandates using '/' for cross-platform glob patterns, which can be confusing for developers used to platform-specific separators and may lead to errors if not followed.
Relies on gobwas/glob for glob filtering, introducing an additional dependency that might increase project bloat or compatibility issues in minimal Go environments.
Focuses solely on traversal and filtering; lacks native support for common needs like file metadata extraction, advanced error handling, or progress tracking without custom code.