Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "io/ioutil"
  5. "os"
  6. "log"
  7. "bufio"
  8. "fmt"
  9. "strings"
  10. "path/filepath"
  11. "io"
  12. "flag"
  13. )
  14.  
  15. func main() {
  16. sourceDir := flag.String("dir", "", "directory where to search")
  17. fileType := flag.String("type", "", "type of files to search in")
  18. textToSearch := flag.String("text", "", "text to search")
  19.  
  20. flag.Parse()
  21. if *sourceDir == "" || *fileType == "" || *textToSearch == "" {
  22. flag.PrintDefaults()
  23. os.Exit(1)
  24. }
  25.  
  26. allFiles, _ := ioutil.ReadDir(*sourceDir)
  27. for _, f := range allFiles {
  28. if !f.IsDir() && strings.HasSuffix(f.Name(), *fileType) {
  29. //fmt.Println("searching file ", f.Name())
  30. fullFilePath := filepath.Join(*sourceDir, f.Name())
  31. file, err := os.Open(fullFilePath)
  32. if err != nil {
  33. log.Printf("Error reading %s", fullFilePath)
  34. continue
  35. }
  36. func() {
  37. defer file.Close()
  38. searchText(file, *textToSearch)
  39. }()
  40. }
  41. }
  42.  
  43. }
  44. func searchText(rd io.Reader, textToSearch string) {
  45. scanner := bufio.NewScanner(rd)
  46. for scanner.Scan() {
  47. if strings.Contains(scanner.Text(), textToSearch) {
  48. fmt.Println(scanner.Text())
  49. }
  50. }
  51.  
  52. if err := scanner.Err(); err != nil {
  53. log.Fatal("scanner error ", err)
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement