ファイル名にスペースが含まれている場合は、ディレクトリ内のすべての.phpファイルでログイン文字列を検索して置換します

スティーブン・ダドナ

mySQLのパスワードとユーザー名を変更したので、それに応じてすべてのPHPスクリプトの接続文字列を置き換える必要があります。

PHPファイル名の多くにスペースが含まれているため、コマンドに問題があります。

「そのようなファイルまたはディレクトリはありません」というエラーが発生せずにこのコマンドを機能させるには、どうすればよいですか?

これが私が使用しているコマンドです:

pattern='mysql_connect("localhost", "olduser", "oldpwd")'
replacement='mysql_connect("localhost", "newuser", "newpwd")'
find . -name "*.php" | xargs -n 1 sed -i -e 's|$pattern|$replacement|g'

私はxargsとsedに慣れていないので、この回答からこのコードを同様の質問にコピーしました。

(mysql_connectステートメントをphpインクルードファイルに入れて、次回は1か所でのみ変更すると思います。)

BASHを使用してUbuntu14.04LTSを実行しています

Gilles Quenot

NULL byteと二重引用符を使用する必要があります:

find . -name '*.php' -print0 |
    xargs -0 -n 1 sed -i -e "s|$pattern|$replacement|g"

または単純なforループで

for p in *php; do
    sed -i -e "s|$pattern|$replacement|g" "$p"
done

シェルで適切に引用する方法を学びましょう。それは非常に重要です:

「二重引用符」スペース/メタ文字を含むすべてのリテラルと、すべての拡張:"$var""$(command "$var")""${array[@]}""a & b"使用する'single quotes'コードまたはリテラルのために$'s: 'Costs $5 US'ssh host 'echo "$HOSTNAME"'
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Argumentshttp://wiki.bash-hackers.org/syntax/words参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ