* Nix altında, bir dizindeki bir dosyadaki dizgiyi nasıl bulabilirim?


2

Ubuntu linux kullanıyorum ve birçok görev için her gün bir terminal emülatörü ile bash kullanıyorum.

Belirli bir dizinde bulunan bir dosya içindeki bir dizgiyi veya alt dizgiyi nasıl bulacağımı bilmek istiyorum.

Hedef alt dizgimi içeren dosyayı bilseydim, sadece dosyayı yakalar ve grep üzerinden geçirirdim.

cat file | grep mysubstring

Ancak bu durumda, sinir bozucu alt dize bilinen bir dizinde herhangi bir yerde olabilir.

Altlığımı nasıl avlarım?

linux  grep 

1
Tıpkı bir not gibi ... kediyi ezmek zorunda değilsin. grep dosyaları iyi okuyabilir.
xenoterracide

Yanıtlar:


11

Bir kabuk joker kullanın:

grep mysubstring *

-rAlt dizinleri aramak istiyorsanız, içine yinelenmek için seçeneği kullanın:

grep -r myssubstring .

veya grep -r mysubstring dizini
xenoterracide

4
find -type f | xargs grep mysubstring

Bu komutların ( find, xargsve grep) birçok seçeneği vardır; bu işlemi büyük ölçüde ayarlayabilirsiniz.


dosya / dizinlerin adlarında boşluklar varsa -print0bulmak ve -0xargs eklemek :find -type f -print0 | xargs -0 grep mysubstring
Doug Harris

4

"~ / projects" dizini altındaki "wiki" metnini içeren tüm python kod dosyalarını bulmak istiyorum, işte komut dosyası:

grep -lir "wiki" ~/projects/**/*.py

komut dosyasını kendi gereksinimlerinize göre ayarlayın.


2

Nasıl yaparsanız yapın, dosyalarınızı grep içine sokmayın. Orijinal sürümünüz

cat file | grep mysubstring

olduğu gibi daha doğru yapılır

grep mysubstring file

1
haklı olsan da, bu sorunun cevabı değil.
xenoterracide

Bana bunu neden söylüyorsun?
Andy Lester,

1

Toplu modda yapmanız gerekmiyorsa, gece yarısı komutanını (mc) yükleyebilirsiniz, dosyalarda dizeleri arayabilir.


1

Belli bir String dizgesine sahip tüm dosyaları "current" dir dizininden bulmak istiyorsanız, şunu kullanın:

find . -type f -exec grep -l mysubstring {} \;

(çoğu üzerinde çalışmalı * nix ')

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.