查找和 sed 在 centos 7 中不起作用
find and sed doesn't work in centos 7
我试图在我的整个项目中查找和替换一个词,我在 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: can't read s/mysql_/mysqli_/g: No such file or directory
尽管我是 运行 来自项目根目录的这些命令,但以上所有命令都在循环中给我这个错误。权限都是正确的。如果我只是单独使用 find 命令,它就可以工作
find ./ -name "*.php" -ls (This Works)
我尝试了 Whosebug 中可用的解决方案,但没有任何效果。
sed
中的第一对引号不是必需的,尝试:
find ./ -name "*.php" -exec sed -i s/mysql_/mysqli_/g {} \;
语法是 -i'prefix'
或 --in-place='prefix'
,而不是 -i 'prefix'
,因为您在前缀和参数之间添加了 space,它使 sed
使用前缀(空字符串)参数作为正则表达式并使用实际的正则表达式作为文件名参数,这显然找不到。
这就是您收到 can't read s/mysql_/mysqli_/g: No such file or directory
错误的原因。
我试图在我的整个项目中查找和替换一个词,我在 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: can't read s/mysql_/mysqli_/g: No such file or directory
尽管我是 运行 来自项目根目录的这些命令,但以上所有命令都在循环中给我这个错误。权限都是正确的。如果我只是单独使用 find 命令,它就可以工作
find ./ -name "*.php" -ls (This Works)
我尝试了 Whosebug 中可用的解决方案,但没有任何效果。
sed
中的第一对引号不是必需的,尝试:
find ./ -name "*.php" -exec sed -i s/mysql_/mysqli_/g {} \;
语法是 -i'prefix'
或 --in-place='prefix'
,而不是 -i 'prefix'
,因为您在前缀和参数之间添加了 space,它使 sed
使用前缀(空字符串)参数作为正则表达式并使用实际的正则表达式作为文件名参数,这显然找不到。
这就是您收到 can't read s/mysql_/mysqli_/g: No such file or directory
错误的原因。