Popularity
3.9
Growing
Activity
0.9
Growing
87
5
5
Programming language: Go
License: BSD 3-clause "New" or "Revised" License
Tags:
Files
skywalker alternatives and similar packages
Based on the "Files" category.
Alternatively, view skywalker alternatives based on common mentions on social networks and blogs.
-
go-storage
A vendor-neutral storage library for Golang: Write once, run on every storage service. -
bigfile
Bigfile -- a file transfer system that supports http, rpc and ftp protocol https://bigfile.site -
go-exiftool
Golang wrapper for Exiftool : extract as much metadata as possible (EXIF, ...) from files (pictures, pdf, office documents, ...) -
concurrent-writer
Highly concurrent drop-in replacement for bufio.Writer -
fileconversion
A Go library to convert various file formats to plaintext and provide related functions -
shred
This is a libary to mimic the functionallity of the linux shred command. -
go-staticfiles
Collects assets (css, js, images...) from a different locations and tags file names with a hash for easy versioning and aggressive caching.
Static code analysis for 29 languages.
Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.
Promo
www.sonarqube.org
Do you think we are missing an alternative of skywalker or a related project?
README
skywalker

Skywalker is a package to allow one to concurrently go through a filesystem with ease.
Features
- Concurrency
- BlackList filtering
- WhiteList filtering
- Filter by Directory
- Filter by Extension
- Glob Filtering (provided by gobwas/glob)
For matching to work properly across platforms. Please use
/
. In gobwas/glob the\
is an escape character (so you can escape*
,?
, etc...) making it difficult to know if you want to escape a character or go into directory.
Example
package main
import (
"fmt"
"sort"
"strings"
"sync"
"github.com/dixonwille/skywalker"
)
type ExampleWorker struct {
*sync.Mutex
found []string
}
func (ew *ExampleWorker) Work(path string) {
//This is where the necessary work should be done.
//This will get concurrently so make sure it is thread safe if you need info across threads.
ew.Lock()
defer ew.Unlock()
ew.found = append(ew.found, path)
}
func main() {
//Following two functions are only to create and destroy data for the example
defer teardownData()
standupData()
ew := new(ExampleWorker)
ew.Mutex = new(sync.Mutex)
//root is the root directory of the data that was stood up above
sw := skywalker.New(root, ew)
sw.DirListType = skywalker.LTBlacklist
sw.DirList = []string{"sub"}
sw.ExtListType = skywalker.LTWhitelist
sw.ExtList = []string{".pdf"}
err := sw.Walk()
if err != nil {
fmt.Println(err)
return
}
sort.Sort(sort.StringSlice(ew.found))
for _, f := range ew.found {
fmt.Println(strings.Replace(f, sw.Root, "", 1))
}
}