发现和sed并没有在centos 7中工作

时间:2015-08-05 14:39:32

标签: linux sed find centos7

我试图在整个项目中找到并替换一个单词,我尝试了以下版本的find和sed in centos 7但没有任何作用。

find ./ -name "*.php" -exec sed -i '' s/mysql_/mysqli_/g \;
find ./ -name "*.php" -exec sed -i '' s/mysql_/mysqli_/g {} \;
find ./ -name "*.php" -exec sed -i '' 's/mysql_/mysqli_/g' {} \;
find ./ -name "*.php" -ls | xargs sed -i '' 's/mysql_/mysqli_/g'
  

sed:无法读取s / mysql_ / mysqli_ / g:没有这样的文件或目录

以上所有命令都在循环中给出了这个错误,即使我从项目的根目录运行这些命令。权限都是正确的。如果我只是单独使用find命令就可以了

find ./ -name "*.php" -ls (This Works)

我尝试了stackoverflow中提供的解决方案,但没有任何作用。

1 个答案:

答案 0 :(得分:2)

sed中的第一对引号是不必要的,请尝试:

find ./ -name "*.php" -exec sed -i s/mysql_/mysqli_/g {} \;

语法为-i'prefix'--in-place='prefix',而不是-i 'prefix',因为您在前缀和参数之间添加了空格,它使sed使用can't read s/mysql_/mysqli_/g: No such file or directory前缀(空字符串)参数作为正则表达式,并使用实际的正则表达式作为文件名参数,显然不会找到。

这就是您收到Application_Start错误的原因。