Bir Git deposunda arama yapıyorum ve .git
klasörü dahil etmek istiyorum .
grep
çalıştırırsam bu klasörü içermez
grep -r search *
Bu klasörü eklemek için grep komutu ne olurdu?
Bir Git deposunda arama yapıyorum ve .git
klasörü dahil etmek istiyorum .
grep
çalıştırırsam bu klasörü içermez
grep -r search *
Bu klasörü eklemek için grep komutu ne olurdu?
Yanıtlar:
Yaptığınız şeye daha iyi bir alternatif olarak lütfen bu yazının sonundaki çözüme bakın.
Gizli dosyaları açıkça dahil edebilirsiniz (bir dizin aynı zamanda bir dosyadır).
grep -r search * .*
*
Gizli dışındaki tüm dosyaları maç olacak ve .*
sadece gizli dosyaları maç olacak. Ancak, belirli bir dizinde gizli olmayan dosya yoksa veya gizli dosya yoksa bu başarısız olur. Elbette .git
bunun yerine açıkça ekleyebilirsiniz .*
.
Bununla birlikte, sadece belirli bir dizinde aramak istiyorsanız, bunu şu şekilde yapın:
grep -r search .
.
Her iki sigara gizli ve gizli dosyaları içerir akım yolu, maç olacak.
.*
ana dizini içerecek (çünkü ..
eşleşiyor)
Bu problemle az önce karşılaştım ve @ bitmask'in cevabına dayanarak, @sehe'nin işaret ettiği problemden kaçınmak için yaptığım basit değişiklik:
grep -r search_string * .[^.]*
sudo grep -r ANDROID_HOME * .[^.]*
burada neyi yanlış yapıyorum?
Belki de aşağıdaki gibi eksiksiz bir çözüm için "grep" ile "bul" komutunu birleştirmeyi tercih edersiniz:
find . -exec grep -Hn search {} \;
Bu komut, gizli dosyalar veya dizinlerde "arama" dizesini arayacak ve bu çıktı biçimiyle çakışan tüm dosyaları listeleyecektir:
Dosya yolu: Satır numarası: tesadüflü çizgi
./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line
Geçerli dizini aradığınızı varsayarak bu yaklaşımı kullanmak isteyebilirsiniz (aksi takdirde, istenen dizini. İle değiştirin):
find . -type f | xargs grep search
veya yalnızca en üst düzeyde arama yapmak istiyorsanız (bunları deniyorsanız test etmek daha hızlıdır):
find . -type f -maxdepth 1 | xargs grep search
GÜNCELLEME: Scott'ın yorumlarına yanıt olarak örnekleri değiştirdim. Ayrıca "-tip f" ekledim.
~
kullanıcının ev dizinidir. Soru, kullanıcının ana dizini ile ilgili değildi, bu yüzden cevaptan bahsedilmemelidir ~
. (2) Bir find
komutta, -name '*'
işlemsizdir (yani, hiçbir amaca hizmet etmez).
YALNIZCA mevcut konumunuzdaki tüm gizli dosyalar ve dizinlerde arama yapmak için:
find . -name ".*" -exec grep -rs search {} \;
YALNIZCA tüm gizli dosyalar:
find . -name ".*" -type f -exec grep -s search {} \;
YALNIZCA tüm gizli dizinler:
find . -name ".*" -type d -exec grep -rs search {} \;
Yalnızca belirli bir klasörde bulmak için şunları kullanabilirsiniz:
ls -al | grep " \."
Listelemek ve grep'e yöneltmek çok basit bir komuttur.
Tyler'ın önerisine ek olarak, gizli dosyalar dahil tüm dosya ve klasörleri yinelemeli olarak grep etme komutu burada.
find . -name "*.*" -exec grep -li 'search' {} \;
Gizli dizin dosyaları için olduğu gibi belirli gizli dosya türlerini de arayabilirsiniz:
grep -r --include=*.directory "search-string"
Bu, diğer seçeneklerden bazılarından daha iyi çalışabilir. İşe yarayan diğer seçenekler çok yavaş olabilir.