Linux 查找并删除';我不能在centos 7工作

Linux 查找并删除';我不能在centos 7工作,linux,sed,find,centos7,Linux,Sed,Find,Centos7,我试图在我的整个项目中找到并替换一个单词,我在centos 7中尝试了以下版本的find和sed,但没有任何效果 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

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

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\ux/mysqli\ug/g:没有这样的文件或目录

尽管我从项目的根目录运行这些命令,但上述所有命令都在循环中给了我这个错误。权限都是正确的。如果我只是单独使用find命令,它就会工作

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

我尝试了stackoverflow中可用的解决方案,但没有任何效果。

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

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'
find ./ -name "*.php" -exec sed -i s/mysql_/mysqli_/g {} \;
语法是
-i'prefix'
-in-place='prefix'
,而不是
-i'prefix'
,因为您在前缀和参数之间添加了一个空格,这使得
sed
使用prefix(空字符串)参数作为正则表达式,使用实际的正则表达式作为文件名参数,这显然找不到


这就是为什么您得到的
无法读取s/mysql\uu/mysqli\ug/g:没有这样的文件或目录
错误。

OSX上的-i参数需要一个空字符串“”。然后他可能应该删除
-i
和前缀之间的空格。