在服务器上的文件中查找字符串并替换它

时间:2016-01-05 20:57:12

标签: php linux

我在.php制作了一个特定的脚本,可以找到某些代码的所有外观(在我的情况下是带有<script>标签的javascript代码),并在实时服务器上替换为其他内容。

类似于grep -rnw '/path/to/somewhere/' -e "pattern"

我的问题是:如何在服务器上运行.php脚本,该脚本将搜索该服务器上的所有文件以获取特定字符串,然后将其替换为其他字符串。

在我的桌面上,我已经对此进行了编码并且有效: `

<?php
$what = <<<EOD
<script>bla bla string</script>
EOD;
$with=" ";
$path_to_file = '/Users/Michael/Desktop/results-prod.txt';
$file_contents = file_get_contents($path_to_file);
$file_contents = str_replace($what,$with,$file_contents);
file_put_contents($path_to_file,$file_contents);
?>

现在我需要一些实时服务器和所有文件(超过1个,所有使用不同路径)。

谢谢, 迈克尔!

2 个答案:

答案 0 :(得分:2)

Private Function RunOtherChanges(ByVal str As String) As String

    Dim pattern As String = "(if\(\w+!=nil\))\s*\1\s*{"

    Dim replacement As String = "$1 {"
    Dim rgx As New Regex(pattern)
    Dim result As String = rgx.Replace(str, replacement)


    Return result
End Function

答案 1 :(得分:1)

在linux中的命令提示符下,您可以这样做:

find /home/www -type f -print0 | xargs -0 sed -i 's/stringToReplace/replacementString/g'

更详细的

find /home/www -type f -print0 | xargs -0 sed -i s/'<script>[^)]*<\/script>'/'<script>Stuff To Replace With<\/script>'/g

请记住使用sed,因为你正在使用正则表达式...你需要逃避某些字符......