Dizin isimlerinin sadece bir parçası olduğu belirli bir dizge ile dizin isimlerini tekrarlı olarak nasıl arayabilirim


73

Dizenin, dizin isminin bir parçası olduğu belirli bir dize ile dizin isimlerini tekrarlı olarak nasıl arayabilirim?

Örneğin: dizin adı "8.0.3-99966_tr", ancak tekrarlı bir şekilde "99966" dizesini içeren dizinleri aramak istiyorum.

Yanıtlar:


95

findKomutu kullanabilirsiniz :

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

Örnek:

find ~ -type d -name "*99966*" -print

"99966" ( ) dizesini içeren ve isimlerini içeren tüm dizinleri ( -type d) kendi ev dizininizden ( ~) bulmalı -name "*99966*"ve onları ( -print) vermelisiniz .


Belirli bir dizini aramadan nasıl hariç tutabilirim? Aramaya ihtiyacım var / ama umursamadığım ton / proc sonuçları alıyorum.
Kozuch

@Kuzuch (bir süre sonra!): Sinf aramasını benzer bir şekilde birleştirerek negatif grep kullanabilirsiniz: find <whatever> | grep -v "/ proc" , arama dizesini içeren tüm satırları filtreleyecektir .
Juan Lanus,


8

Sen boru çıkışı için olabilir grepo dizin adı vurgulamak için
böyle bir şey

find / -type d | grep "directory name"

/Tüm bilgisayarı aramak için işaret


@Zanna haklısın, cevabı değiştirdim. Buna dikkat çektiğiniz için teşekkürler
Collin

3

Bunu yapmanın kolay bir yolu kullanmaktır find | egrep string. Çok fazla isabet varsa, -type dbulmak için bayrağı kullanın . Komutu aramak istediğiniz dizin ağacının başında çalıştırın, yoksa dizini de bir argüman olarak belirtmeniz gerekir find.

Bunu yapmanın başka bir yolu kullanmaktır ls -laR | egrep ^d.

Ve locatekomut da kullanışlı oluyor:locate string

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.