php命令行 交互运行(实现查找,替换功能)

介绍:
php命令交互运行(实现查找,替换功能),此脚本只能运行在linux平台,需要安装php-cli
如果提示有默认的可以直接回车。
查找都忽略.svn目录下的内容,对使用SVN的情况下查找提供了很多方便。
小提示
到想查找或替换的目录下全路径执行此文件,可以不用写查找目录,直接回车。
举例:如果查找/var/www目录下的所有文件,脚本所在目录在用户根目录则可以

cd /var/www;
~/linuxphp

#!/usr/local/php/bin/php

<?php

// ask for input

fwrite(STDOUT, "选择需要的操作(默认查找)\n[1]查找\n[2]替换\n输入编号: ");



// get input

$todo = trim(fgets(STDIN));

if(empty($todo)) $todo =1;

if($todo != 1 && $todo !=2){

    echo "选择错误\n";

    exit;

}

if($todo==1){

    fwrite(STDOUT,"输入要查找的目录(默认当前目录):");

    $dir = trim(fgets(STDIN));

    if(empty($dir)){

        $dir = getcwd();//当前目录

    }else{

        if(!is_dir($dir)){

            echo "文件目录不存在\n";

            exit;

        }

    }

    fwrite(STDOUT,"输入要查找的内容:");

    $search = trim(fgets(STDIN));

    echo "正在目录'".$dir."'查找'".$search."',请稍后...\n";

    exec("find ".$dir." -exec grep --exclude='*.svn/*' -- '".$search."' \{\} +",$output);

    foreach($output as $val){

        echo "$val\n\n";

    }

}else{// write input back

    fwrite(STDOUT, "输入要查找的目录:(默认当前目录)");

    $dir = trim(fgets(STDIN));

    if(empty($dir)){

        $dir = getcwd();//当前目录

    }else{

        if(!is_dir($dir)){

            echo "文件目录不存在\n";

            exit;

        }

    }

    fwrite(STDOUT,"输入要查找的文件后缀(默认php):");

    $ext = trim(fgets(STDIN));

    if(empty($ext)) $ext = 'php';

    fwrite(STDOUT,"输入要查找的内容:");

    $search = trim(fgets(STDIN));

    fwrite(STDOUT,"输入要替换为的内容:");

    $replace = trim(fgets(STDIN));

    echo "正在目录'".$dir."'查找后缀为'".$ext."'的文件,将内容'".$search."'替换为'".$replace."',请稍后...\n";

    exec("find ".$dir." -name '*.".$ext."'  -exec sed --in-place 's/".$search."/$replace/g' {} \;");

    echo "替换完成\n";

}

2008.12.29日
更新BUG
查找或替换内容可以包含 ' " \  / 四个特殊符号

代码太多,直接提供下载


2009-08-04更新下载链接

linuxphp.rar (909 bytes, 下载次数:38, 上传时间:2011-10-07 14:49)

上一篇: 软件设计师报名时间   下一篇: Siege:压力模拟/测试工具

提交疑问

回顶部