hariç tutma dizinini bul


13

Linux'tayım (Ubuntu) ve bunu yaparken bazı dizinleri (.hg gibi) hariç tutmak istiyorum

find | less  

Aşağıdaki listeden .hg dizinini hariç tutmak için denedim, ama çalışmıyor gibi görünüyor.

find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)

.directoryBul komutunda nasıl hariç tutabilirim

Yanıtlar:


14

On benzer için araştırma findçözümü I yararlı açıklama keşfetti sh 'Bul' ve 'erik' seçeneğini nasıl kullanılır? Laurence Gonsalves tarafından .

Şöyle bir şey kullanabilirsiniz:

find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)

veya (isimsiz)

find . \( -type d -name .hg -prune \) -o \( -type f -print \)

(Kaçan) parantezler \(ve OR ( ) ' nin solunda ve sağında \)testleri ( typeve name) ve karşılık gelen eylemleri ( pruneve printsırasıyla) birlikte gruplandırın -o.

Yana -obitişiklikten daha düşük önceliğe sahiptir İsterseniz siz parantez atlayabilirsiniz. Birçok finduygulama finali atlamanızı da sağlar -print.

find . -type d -name .hg -prune -o -type f -name "foo" -print

1
Çözümümü yazmak üzereydim, ama tam olarak böyle görünüyor. Şahsen , sadece ve / veya işlemleri daha açık hale getirmek için -prune, ilk parantez kümesinin içine ve -type f -printikinci bir kümeye koyarım, ama aksi takdirde bu bana göre görünür.
me_and

@Me_and adlı kullanıcının yorumu sayesinde parantezleri (ve gerekçelerini) geliştirdim.
fheub

2

Şuna bir göz atın ack: http://betterthangrep.com/

Makul bir varsayılan hariç tutulan klasör kümesine sahip olmanın yanı sıra (örneğin .hg varsayılan bir hariç tutma), yeni klasörleri hariç tutmak kolaydır:

ack --ignore-dir=.directory search_term

Bunu, dosya listesini aradığınız kullanım durumunuza geri getirmek için, -fseçeneği aşağıdaki gibi kullanırsınız :

ack -f --ignore-dir=.directory

Kıvrımlı arama / bulma komutlarını yazmaktan basit ack'lere geçtim.

İpucu: Sık kullanılan komut satırı seçeneklerini (örneğin hariç tutulan klasörler) bir .ackrc dosyasına yerleştirin.


find | lessSöz konusu soruya dayanarak , OP basit bir dosya listesi arıyor. Bu nasıl yardımcı oluyor?
bir CVn

@ MichaelKjörling Cevabımda belirttiğim gibi, -f seçeneği dosyaların bir listesini sağlar.
Brian Leathem

-2

deneyebilirsin

find \( ! -regex '.*/\.directory\(\|/.*\)' \)

Kesinlikle bu OP'nin istediği gibi bir şey yapmadığından emin.
me_and

Sadece bunun ne demek istediğini sanıyordum.directory
yuyichao
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.