Micro-tools: Linux command line find & replace
Fri, 29 Oct 2010 21:27:53 +0000
Sometimes you have to update many files at once. If you are using an IDE there is option during replace "search in all files". I'll show you how make those massive changes faster, using just Linux command line. Place this file in ~/bin/repl
#!/bin/sh PATTERN="$1" FROM="$2" TO="$3" FILES=$(grep -le "$FROM" `find . -name "$PATTERN"`) echo Files: $FILES sed -i "s!$FROM!$TO!g" $FILES
Sample usage is:
repl "*.cpp" "loadFiles" "retrieveFiles"
Some explanation about script:
- grep -l: shows on stdout only filenames of matching files
- grep -e: accepts pattern as argument
- sed -i: changing files "in place"
- grep -le: we want only files that will match $FROM to be updated (minimizes build time after change)
Pretty easy and powerful. Enjoy!