Belirli bir kalıpla eşleşen tüm dizinleri ve alt dizinleri (Linux'ta) nasıl bulurum (veya hariç tutarım)?


17

Yollarında .svn (Subversion gizli klasörler) olmayan tüm dizinleri ve alt dizinleri bulmak için Linux find komutunu kullanmaya çalışıyorum. Ben sadece gerçek .svn dizinleri kendilerini hariç tutmak için alabilirsiniz, ancak alt dizinleri hiçbirini değil.

Şu an ne yapıyorum:

find . -type d \! -iname '*.svn*'

Ayrıca denedim:

find . -type d \! iname '.svn' \! iname '.svn/*'

Sadece bir FYI, ben bulmak desen kullanmaya çalışıyorum böylece bazı alt sürüm özelliklerini depomuzda alt sürüm gizli klasörler ve alt dizinleri (find komutundan döndürülen dizinlere exec komutu uygulayarak) hariç tüm dizinlere uygulayabilirsiniz ) ..

TIA

Yanıtlar:


25
find . -type d -not \( -name .svn -prune \)

Bunlarla birlikte gideceğim, hepsi işe yaramış gibi görünüyordu.
Jason Down

Daha önce bulmak için -dut kullanmıştım, ama \ (... \) numarasını görmemiştim. Teşekkürler.
Rory

Bunun, düğüm modüllerini satırları saymaktan hariç tutmak istediğim bir node.js / express uygulamasında nasıl çalışacağını söyleyebilir misiniz? find . -name '*.js' -not \( -name 'node_modules' -prune \) | xargs wc -l Başarısız denedim ...
parçalama

Node.js / Express uygulamalarıyla ilgili @shredding'e yanıt olarak ve node_modules dizinlerini find'ın sonuçlarından hariç tutma, bu benim için işe yarar: find. -name ' .test.js ' -not (-wholename '* node_modules ') ... çalıştırmak istediğim testlerin ".test.js" ile sonlandırıldığı göz önüne alındığında
mysterlune

Bu olmadan çalışır mıydı -type d? Tüm dosyayı aramayı seviyorum ama ".git" dizinini özyinelemeli olarak hariç tutuyorum
James Mitch

6

Peki ya basitçe

find . -type d |  grep -v '.svn'

Bulma eylemlerinden herhangi birini kullanma yeteneğinizi kaybeder.
David Pashley

Evet, ama bunun yerine güzel bir sh döngüsü ne olacak? :) FILE için find . -type d | grep -v '.svn'; ne olursa olsun yankı yapmak; tamamlandı
wazoox

6

Bulma -pathseçeneği ne olacak ?

find . -type d ! -path '*.svn*'

1
Kapanış teklifini kaçırdı. Joker karakterlerin çok açgözlü olma olasılığı dışardadır.
Dan Carley

2

bulmak. -yol './tmp' -dünya -o .......


2

Kullanabilirsin:

find . -type d -not -wholename '*.svn*' 

cevabın önünden * çıkardı ... bulunmalıdır. -type d -not -wholename ' /.svn/ ' (bu wholename squote yıldız işareti eğik çizgi nokta svn eğik çizgi yıldız işareti)
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.