28 lines
		
	
	
		
			462 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			462 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| set -e
 | |
| unset CDPATH
 | |
| 
 | |
| # Find and replace by a given list of files.
 | |
| #
 | |
| # replace foo bar **/*.rb
 | |
| 
 | |
| main() {
 | |
|   local search="$1"
 | |
|   local replace="$2"
 | |
|   shift 2
 | |
| 
 | |
|   for item in $(ag -l --nocolor "$search" "$@"); do
 | |
|     sed -ir "s%${search//%/\\%}%${replace//%/\\%}%g" "$item"
 | |
|   done
 | |
| }
 | |
| 
 | |
| # Show matches
 | |
| ag "$1"
 | |
| 
 | |
| # Are you sure?
 | |
| read -rp "Confirm search+replace? (y/n)?" choice
 | |
| case $choice in
 | |
|   y|Y) main "$@" ;;
 | |
|   *) >&2 echo "Aborted"; exit ;;
 | |
| esac
 |