Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "io/ioutil"
- "os"
- "log"
- "bufio"
- "fmt"
- "strings"
- "path/filepath"
- "io"
- "flag"
- )
- func main() {
- sourceDir := flag.String("dir", "", "directory where to search")
- fileType := flag.String("type", "", "type of files to search in")
- textToSearch := flag.String("text", "", "text to search")
- flag.Parse()
- if *sourceDir == "" || *fileType == "" || *textToSearch == "" {
- flag.PrintDefaults()
- os.Exit(1)
- }
- allFiles, _ := ioutil.ReadDir(*sourceDir)
- for _, f := range allFiles {
- if !f.IsDir() && strings.HasSuffix(f.Name(), *fileType) {
- //fmt.Println("searching file ", f.Name())
- fullFilePath := filepath.Join(*sourceDir, f.Name())
- file, err := os.Open(fullFilePath)
- if err != nil {
- log.Printf("Error reading %s", fullFilePath)
- continue
- }
- func() {
- defer file.Close()
- searchText(file, *textToSearch)
- }()
- }
- }
- }
- func searchText(rd io.Reader, textToSearch string) {
- scanner := bufio.NewScanner(rd)
- for scanner.Scan() {
- if strings.Contains(scanner.Text(), textToSearch) {
- fmt.Println(scanner.Text())
- }
- }
- if err := scanner.Err(); err != nil {
- log.Fatal("scanner error ", err)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement