By Firoz AnsariMay 12, 20192 min readComments (0)

I thought spending this weekend to kickstart learning Go. As a committed .NET/C# developer for 15 years, working with the Go syntax is a different kind of experience. I am still trying to well verse myself with Go syntax and development

Once I got the hang of Go basic syntax, I thought why not build a small and useful tool in Go which could resolve a daily annoyance. Folk, this is what I come up with, randr.

randr is a command line tool which recursively searches files content for source string and replaces it with the target string. With that, randr will also recursively rename files or folders name which matches source string to target string. You can also specify a command flag, if you want to rename or replace based on case sensitive or case insensitive search. And that is all!

randr - Help

To illustrate the usage of randr, consider you have a project folder with the following structure:

// Project Folder: c:\Projects\Payroll\

// c:\Projects\Payroll\Models\Worker.cs
public class Worker {}

// c:\Projects\Payroll\Services\WorkerService.cs
public class WorkerService {}

// c:\{rojects\Payroll\Repositories\WorkerRepository.cs
public class WorkerRepository {}

// c:\Projects\Payroll\Helpers\Worker\Extensions.cs
public static class Extensions {}

Let's refactor above project using randr and change Worker entities to Employee. randr command to refactor will look like following which will replace any files text which contains Worker to Employee as well as will rename any file or folder with contains Worker to Employee.

randr.exe -find=Worker -replace=Employee -match=true -location=c:\Projects\Payroll\

randr - Example

After running randr successfully, our example project folder will look like following:

// Project Folder: c:\Projects\Payroll\

// c:\Projects\Payroll\Models\Employee.cs
public class Employee {}

// c:\Projects\Payroll\Services\EmployeeService.cs
public class EmployeeService {}

// c:\Projects\Payroll\Repositories\EmployeeRepository.cs
public class EmployeeRepository {}

// c:\Projects\Payroll\Helpers\Employee\Extensions.cs
public static class Extensions {}

Please go over in the project repository for parameter usage details.

Project Repository: randr

randr is currently a bare minimum tool and it does require some more polishing. I hope you will find randr useful.

Copyright © 2021 Firoz Ansari.
All Rights Reserved.