我有一个重命名的js文件,我必须在每个php页面中调用它。现在我想用新的shell替换旧的名称。 什么用IAM是这样的: -使用单行shell命令替换所有文件中的特定文本
sed -i ’s/old/new/g’ *
,但这是给下面的错误: -
sed: -e expression #1, char 1: unknown command:
现在我怎样才能做到这一点?更换
我有一个重命名的js文件,我必须在每个php页面中调用它。现在我想用新的shell替换旧的名称。 什么用IAM是这样的: -使用单行shell命令替换所有文件中的特定文本
sed -i ’s/old/new/g’ *
,但这是给下面的错误: -
sed: -e expression #1, char 1: unknown command:
现在我怎样才能做到这一点?更换
可能有更简洁的解决方案,但在这里我们去:
for i in *; do sed -i 's/old/new/g' "$i"; done
你要知道,它只会在文件系统的当前水平的工作,在子目录中的文件将不会被修改。另外,你可能想用* .php替换*,或者做备份(在-i之后传递一个参数,并且它将使用给定的扩展名进行备份)。
试试这个:
ls | grep "php" > files.txt
for file in $(cat files.txt); do
sed 's/catch/send/g' $file > TMPfile.php && mv TMPfile.php $file
done
ls/grep/cat没用。 '用于* .php中的文件;做...;完成' – ghostdog74 2010-03-26 11:52:49
不知道无用 - 但它是一个非常丑陋的方法,那么事实上,使用固定的临时文件名(files.txt,TMPfile.php)如果有任何并发,将会中断。 – symcbean 2010-03-26 12:17:38
perl -pi -e 's/old/new/g' *.php
在OSX'zsh:参数列表中出现错误太长:perl' – jamescampbell 2018-02-27 04:12:04
刚刚在zsh OSX上测试过并且适用于我。 – radio4fan 2018-02-27 10:56:34
sed -i.bak 's/old/new/g' *.php
做递归
find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;
这给出了错误“FIND:Invalid switch” – 2017-10-27 11:34:44
您正在使用Unicode撇号(右单引号 - U2019),而不是ASCII(0×27)您的sed
命令参数周围的撇号。
这是一个非常简单的,没有对或环路,一个照顾任何数量或嵌套目录
grep -rl oldText [folderName-optional] | xargs sed -i s/oldText/newText/g
哼。在OSX上得到了'我期望的命令\后跟文本' – jamescampbell 2018-02-27 04:10:55