SORU
22 Ocak 2009, PERŞEMBE


Küresel arama ve değiştirme Linux komut satırı

Ve tüm dosyalar bir linux makine üzerinde grep ile eşleşen bir dize aramak ve değiştirmek için çalışıyorum. Yapmak istediğim bir kaç parça var ama hepsini dize için nasıl emin değilim.

grep -n 'foo' * beni şeklinde çıktı verecektir:

[filename]:[line number]:[text]

Her dosya grep döndürdüğü için, "" "" ve sonuç geri dosya. write bar foo değiştirmek istiyorum İyi bir yolu var mı? Süslü bir boru hattı olabilir mi?

CEVAP
23 Ocak 2009, Cuma


Bu istediğin şey için, verdiğin örnek dayalı görünür:

sed -i 's/foo/bar/g' *

Özyinelemeli (alt dizinleri inecek değil) değil. Bir ağaç boyunca iyi bir çözüm seçili dosyaların yerini bulmak için kullanmak istiyorsunuz:

find -name '*.html' -print -exec sed -i.bak 's/foo/bar/g' {} \;

*.htmldosyaları uyması gerektiğini ifade etmektedir.baksonra-benorijinal dosyanın bir kopyasını yapar .uzantısı (istediğiniz herhangi bir uzantısı olabilir) ve bakgsed sonunda ifade sed tek bir satırda birden çok kopya (yerine sadece ilki) yerini söyler.-yazdırınbulmaktır dosyaları bahisler ediliyordu göstermek için bir kolaylık. Tüm bu sistem bu araçlar tam sürüm bağlıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guillaume2111's channel

    guillaume211

    19 Kasım 2006
  • Rayone GB

    Rayone GB

    14 Temmuz 2007
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010