Favori BASH komutlarımdan biri:
find . -name '*.*' -exec grep 'SearchString' {} /dev/null \;
Belirtilen SearchString için geçerli dizindeki ve altındaki tüm dosyaların içeriğini arar. Bir geliştirici olarak, bu zaman zaman kullanışlı oldu.
Mevcut projem ve kod tabanımın yapısı nedeniyle, bu BASH komutunu, ".svn" içeren bir dizinde veya altındaki dosyaları ya da ".svn" içeren dosyaları aramayarak daha da gelişmiş yapmak istiyorum. ".html" ile bitirin
MAN sayfası bulmak için biraz kafam karıştı. -Prune'u kullanmayı denedim ve bu bana garip davranışlar verdi. Yalnızca .html sayfalarını atlamak için (başlamak için) şunu denedim:
find . -wholename './*.html' -prune -exec grep 'SearchString' {} /dev/null \;
ve umduğum davranışı alamadım. Sanırım -prune noktasını özlüyorum. Bana yardım eder misiniz?
Teşekkürler
grep -rl 'SearchString'
find
bir dosyanın içinde arama yapmak için kullanılır .
-name '*.*'
bulamıyor : yalnızca adlarına sahip olanları (kullanımları genellikle bir DOS-ism, oysa Unix'te normalde sadece bunun için kullanıyorsunuz). Gerçekten hepsini eşleştirmek için, sadece tamamen argüman kaldırın: . Veya sadece dosyalara grep uygulamak (ve dizinleri atlamak) istiyorsanız, o zaman yapın . .
*.*
*
find . -exec ...
find . -type f -exec ...
find
bir yerleşik bash komutu değil, ayrı bir programdır