Skip to content

Instantly share code, notes, and snippets.

@tdegrunt
Created September 29, 2014 11:53
Show Gist options
  • Select an option

  • Save tdegrunt/045f6b3377f3f7ffa408 to your computer and use it in GitHub Desktop.

Select an option

Save tdegrunt/045f6b3377f3f7ffa408 to your computer and use it in GitHub Desktop.
Replace some text in a bunch of files with golang
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
func visit(path string, fi os.FileInfo, err error) error {
if err != nil {
return err
}
if !!fi.IsDir() {
return nil //
}
matched, err := filepath.Match("*.txt", fi.Name())
if err != nil {
panic(err)
return err
}
if matched {
read, err := ioutil.ReadFile(path)
if err != nil {
panic(err)
}
//fmt.Println(string(read))
fmt.Println(path)
newContents := strings.Replace(string(read), "old", "new", -1)
fmt.Println(newContents)
err = ioutil.WriteFile(path, []byte(newContents), 0)
if err != nil {
panic(err)
}
}
return nil
}
func main() {
err := filepath.Walk(".", visit)
if err != nil {
panic(err)
}
}
@MarvWasTaken
Copy link
Copy Markdown

MarvWasTaken commented Oct 28, 2020

Thank you! πŸ‘

@traviisd
Copy link
Copy Markdown

traviisd commented Feb 9, 2021

Thanks a bunch! πŸ‘

@voyars
Copy link
Copy Markdown

voyars commented Aug 8, 2021

Perfect. it works very well! #TY

@elbosp
Copy link
Copy Markdown

elbosp commented Jan 18, 2022

Asking, at line if !!fi.IsDir(), vscode give alert negating a boolean twice has no effect; is this a typo?. Is it correct? Or I can just replace with if fi.IsDir()? Thanks!

@elbosp
Copy link
Copy Markdown

elbosp commented Jan 18, 2022

How to replace old and new with parameter?

Copy link
Copy Markdown

ghost commented Mar 25, 2022

Thanks!

@pat3icki
Copy link
Copy Markdown

it's beautiful how an old code still works, thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment