2011-01-26 9 views
1

私は(再帰的にあまりにも)各ファイルを通過すると仮定して、ですべて置き換える:私は後者で、前者を置き換えるためにLinux上で実行することができますどのようなコマンドLinuxでは、どのように各ファイルを調べて置き換えますか?

{% media_url %}/ 

:で

{{ MEDIA_URL }} 

を、すべての私のファイルで、再帰的に?

+2

http://unix.stackexchange.com/には適していますか? PythonとDjangoのタグを削除する - >ここには関係ありません... – ChristopheD

+1

いつもどおり:何を試してみましたか?ああ、なぜPythonとしてタグ付けされていますか? –

答えて

6

どうSEDソリューションについて...

find ./ -type f -exec sed -i 's/{{ MEDIA_URL }}/{% media_url %}\//g' {} \; 
更新

:コメンターあたりとして追加/ gがを示唆し

更新:何とかユニコード文字は

+0

+1私の10秒前に:-) –

+1

最初のオカレンス(おそらくOPが望むもの)だけでなく、sedに 'g'モディファイアを加えてください。 – rbp

+1

エラーがあります:sed:-e式#1、char 1:未知のコマンド: '? ' – TIMEX

3

そこにコピーしました可能な限り、-execの代わりにxargsを使用します。 -execとすると、ファイルごとに1つのプロセスが起動され、xargsでは1つのプロセスしか存在しません。そのためにsedオプション-sを使用する必要があります。このコマンドは、いくつかのファイルを持っている方が高速です。

find ./ -type f | xargs sed -s -i 's/{{ MEDIA_URL }}/{% media_url %}\//g' 
+0

これは時代遅れの可能性がありますが、私はxargsと非常に多数のファイル(> 1024)の問題にぶつかりました。あなたの方法は確かに高速かもしれません。私が話していることに遭遇したことはありますか? –

+0

Xargsは多数のファイルを分割していくつかのコマンドを実行することができます。 -nオプションを使用すると、引数の最大数を制御できます。 – ciceron

関連する問題