我有我有我的每个PHP页面中调用一个重命名的JS文件。现在我想用外壳更换新老名称。 IAM使用这是什么: -
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之后,它将使与该扩展备用)。
sed -i.bak 's/old/new/g' *.php
做递归
find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;
您正在使用Unicode的单引号(右单引号 - U2019),而不是ASCII(0×27)在你的sed
命令参数撇号。
这是一个非常简单的,没有对或环路,并采取任何数量或嵌套目录的护理
grep -rl 'oldText' [folderName-optional] | xargs sed -i 's/oldText/newText/g'
perl -pi -e 's/old/new/g' *.php
为了完整起见,提供上述接受的答案的OSX兼容版本(回答来自@jamescampbell评论)
for i in *.php; do sed -i .orig 's/old/new/g' "$i"; done
此命令创建.orig
备份文件。
我知道,我真的很迟,但仍:
find . -type f -name "*.php"|xargs sed -i 's/old/new/g'
用双引号
sed -i "s/old/new/g" *
尝试这个:
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