Linux Command Line: Find & Replace in Multiple Files


There are many ways to do this. This one is my favorite

grep -rl "old_string" . | xargs sed -i 's/old_string/new_string/g'

What is happening

  • grep -rl: search recursively, and only print the files that contain “old_string”
  • xargs: take the output of the grep command and make it the input of the next command (ie, the sed command)
  • sed -i ‘s/old_string/new_string/g’: search and replace, within each file, old_string by new_string