使用单行shell命令替换所有文件中的特定文本

dev*_*per 34 shell sed shellexecute

我有一个重命名的js文件,我必须在我的每个PHP页面调用.现在我想使用shell替换旧名称.我用的是这个: -

sed -i ’s/old/new/g’ *
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误: -

sed: -e expression #1, char 1: unknown command:
Run Code Online (Sandbox Code Playgroud)

现在我该如何替换?

gho*_*g74 50

sed -i.bak 's/old/new/g' *.php
Run Code Online (Sandbox Code Playgroud)

递归地做

find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;
Run Code Online (Sandbox Code Playgroud)


K. *_*ert 30

可能没有那么详细的解决方案,但我们在这里:

for i in *; do sed -i 's/old/new/g' "$i"; done
Run Code Online (Sandbox Code Playgroud)

请注意,它只能在文件系统的当前级别上工作,子目录中的文件不会被修改.此外,您可能希望将*替换为*.php,或者进行备份(在-i之后传递参数,它将使用给定的扩展名进行备份).


Pau*_*ce. 9

您正在使用Unicode撇号(RIGHT SINGLE QUOTATION MARK - U2019)而不是围绕sed命令参数的ASCII(0x27)撇号.


小智 8

这个非常简单,没有for或loop,并且处理任何数字或嵌套目录

grep -rl 'oldText' [folderName-optional] | xargs sed -i 's/oldText/newText/g'


小智 8

我知道我真的迟到了,但仍然:

find . -type f -name "*.php"|xargs sed -i 's/old/new/g'
Run Code Online (Sandbox Code Playgroud)