Yerine sedile findkullanıngrep
Her şeyden önce, finddaha ziyade işe alırdım grepve bu üç iyi nedenden dolayı:
finddaha hassas dosya seçimine izin verir. Örneğin, grep -r string *.txtyalnızca geçerli dizindeki dosyaları verir; alt dizinlerdekiler değil.
find-exectüm --null … |xargs 0yapıya olan ihtiyacı ortadan kaldıran güçlü bir seçenek ile birlikte gelir .
-readableVe -writablebir seçenek finderişilemiyor dosyalar üzerinde vakit önleyecektir.
Çekim testi
Bununla birlikte, grepneyin yakalanacağını görmek için ilk test için ödünç verilir:
$ find . -exec grep term1 {} \;
veya daha spesifik olarak:
$ find . -type f -name '*.txt' -readable -writable -exec grep term1 {} \;
Kuru çalışma
Şimdi, sedkuru bir koşu ile devam edin . sedSeçenek -neş anlamlıdır --quietve pen sonunda sedifade akım desen alanı yazdırılır.
$ find . -exec sed -n 's/term1/term2/gp' {} \;
veya daha spesifik olarak:
$ find . -type f -name '*.txt' -readable -writable -exec sed -n 's/term1/term2/gp' {} \;
infaz
Herşey yolunda görünüyorsa, değiştirerek kesin komutu sedseçeneğini -ntarafından -i"yerinde" ve kaldırarak psonunda.
$ find . -exec sed -i 's/term1/term2/g' {} \;
veya daha spesifik olarak:
$ find . -type f -name '*.txt' -readable -writable -exec sed -i 's/term1/term2/g' {} \;
Diğer findörnekler
Daha fazla findörnek burada bulunabilir .