2017-01-20 7 views
1

多くのPHPファイルがあるフォルダがあり、その中には特定の単語を持つ行があります。 (特定の単語を含む)のラインというを持っているすべてのファイルを検索するLinuxのコマンドラインを必要とし、別の単語例えば で行ことを置き換える:PHPファイルの一部であり、上記のコードで特定の単語を含むすべての行を、フォルダ内のすべてのPHPファイルの新しい単語に置き換えます。

 $source = $_FILES['fupload']['tmp_name']; 
    $target = "upload/".$_FILES['fupload']['name']; 
    move_uploaded_file($source, $target);// or die ("Couldn't copy"); 
    $size = getImageSize($target); 

は、仮定その特定の単語は "fupload"であり、linuxコマンドラインを実行した後にその行を "echo"に置き換えたい場合は、次のようになります。

 echo 
    $target = "upload/".$_FILES['fupload']['name']; 
    move_uploaded_file($source, $target);// or die ("Couldn't copy"); 
    $size = getImageSize($target); 

このプロセスは、この状況を持つすべてのphphファイルに対して実行されます。

私はこのコードを見つけましたが、このコードは、特定の単語が含まれていますが、私は別の言葉でそれらのラインの全体を交換する必要が行削除します。あなたのようにfuploadの唯一の最初の発生を(置き換えるに

 find /var/www/website -type f -exec sed -i '/$vjfegamd/d' {} ';' 
+1

あなたが技術的に '$のtarget'のでfupload''のすべてのインスタンスを置き換えたいですも置き換える必要がありますか? – bc2946088

+0

あなたの入力に 'fuploaded'が表示された場合、その行も置き換えられますか?あなたが探している "単語"にregexpメタキャラクタが含まれていてもいなくてもかまいませんか?アルファベット以外の文字を含むことができますか?そうであれば、どのように "単語"を定義しますか? –

答えて

1

をサンプルコード)、これを試してみてください。

find . -name '*.php' -print0 -exec sed -i.bak '0,/fupload/c echo' {} \; 

cコマンドは、コマンド次の文字列と行全体を変更します。

編集する前に、すべてのファイルが.bak拡張子で保存されます。

いくつかのsedの味が改行で従うべきcを必要として、あなたは同じ結果のためにこれを試してみてくださいすることができます

find . -name '*.php' -print0 -exec sed i.bak '0,/fupload/s//echo/' {} \; 
関連する問題