2012-01-18 15 views
12

Userクラスの1つがget_privileges();であるクラスを作成していました。ディレクトリ内のすべてのファイル内の単語のすべての出現を変更する方法

キーボードに私の頭をスラミングの時間後、私は最終的に私は、この特定のデータベースは、このようにもどこにでもMySQLデータベースに「privelages」と言葉「権限を」綴られ、継承された前回のコーダことを発見これらの "privelages"にアクセスする何百ものファイルで、それはそのように綴られています。

私が対処する必要はありませんように私は、/var/wwwフォルダ内のすべての場所を通過し、「権限」と「privelages」を置き換えることができ、Linuxでの方法(Ubuntuのサーバ)がありますこの打ち間違いや周囲のコードでは?

答えて

27

(未テスト)アカウントのサブディレクトリになりますバリエーション:

find /var/www -type f -exec sed -i 's/privelages/privileges/g' {} \; 

これますfindすべてのファイル(-type fで指定されていないディレクトリ)/var/wwwの下で、 sedコマンドを実行して、 "privelages"を見つけた各ファイルの "特権"に置き換えます。

+8

ありがとうございます - BSD sedでMac上の人々のために。拡張子を-i引数に追加する必要があります。 'sed -i" "'s/prive ...' – xer0x

+0

スペルミスが含まれているファイルに対してのみ 'sed'を実行したい場合(プロジェクトに何千ものファイルが含まれているとします) 、あなたは 'grep -l -r" privelages/var/www |を実行できます。 xargs -I "@" sed -iの/ privelages /特権/ g '@ ' –

+0

grepを使ってsedを実行するとsedを使うよりもパフォーマンスは悪くなります。 – cegfault

5

このチェックアウト:http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

cd /var/www 
sed -i 's/privelages/privileges/g' * 
+0

ありがとう、私は答えを感謝します。 –

+1

'find'を追加するか、サブディレクトリを再帰的に扱う場合は、すべてのサブディレクトリ内のすべてのファイルをglobすることができます(ヒント:**/*はいくつかのシェルでこれを行います)。これはFAQです。類似の質問を検索する。文盲の先人に対処しなければならないことに対するあなたの同情... – tripleee

関連する問題