我试图在整个项目中找到并替换一个单词,我尝试了以下版本的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中提供的解决方案,但没有任何作用。
答案 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
错误的原因。