Search code examples
shellsedshellexecute

replace a particular text in all the files using single line shell command


I have a renamed js file which I have to call in each of my php pages. Now I want to replace that old name with the new one using shell. what iam using is this:

sed -i ’s/old/new/g’ *

but this is giving the following error:

sed: -e expression #1, char 1: unknown command:

How can I do this replacement?


Solution

  • There are probably less verbose solutions, but here we go:

    for i in *; do sed -i 's/old/new/g' "$i"; done
    

    Mind you, it will only work on the current level of the file system, files in subdirectories will not be modified. Also, you might want to replace * with *.php, or make backups (pass an argument after -i, and it will make a backup with the given extension).