Bagaimana saya bisa mencari nama direktori secara rekursif dengan string tertentu di mana string hanya bagian dari nama direktori

73

Bagaimana saya bisa secara rekursif mencari nama direktori dengan string tertentu di mana string hanya bagian dari nama direktori?

Sebagai contoh: nama direktori adalah "8.0.3-99966_en", tetapi saya ingin secara rekursif mencari direktori dengan string "99966".

Bob Perez
sumber

Jawaban:

95

Anda dapat menggunakan findperintah:

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

Contoh:

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

harus menemukan semua direktori ( -type d) mulai dari direktori home Anda ( ~) yang memiliki nama mereka yang berisi string "99966" ( -name "*99966*") dan mengeluarkannya ( -print).

lgarzo
sumber
Bagaimana saya bisa mengecualikan direktori tertentu dari pencarian? Saya perlu mencari / tetapi saya mendapatkan banyak hasil / proc yang tidak saya pedulikan.
Kozuch
@ Kuzuch (setelah beberapa saat!): Anda dapat menggunakan grep negatif, menyaring pencarian sinf ke dalam commend seperti: find <wh whatever> | grep -v "/ proc" yang akan menyaring semua baris yang berisi string pencarian.
Juan Lanus
19

Untuk menghindari semua hasil "Izin ditolak", Anda dapat menggunakan:

find / -type d -name "*99966*" -print 2>/dev/null

Lihat artikel ini di perangkat nol dan yang ini di aliran standar untuk info lebih lanjut.

Dan Fletcher
sumber
bekerja untuk saya :) ~
smatthewenglish
9

Anda dapat pipa output ke grepuntuk memilikinya menyorot nama direktori
Sesuatu seperti

find / -type d | grep "directory name"

The /menunjukkan untuk mencari seluruh komputer

Collin
sumber
@Zanna Anda benar, saya sudah mengedit jawabannya. Terima kasih telah menunjukkannya
Collin
3

Cara mudah untuk melakukannya adalah menggunakan find | egrep string. Jika ada terlalu banyak klik, gunakan -type dbendera untuk menemukan. Jalankan perintah di awal pohon direktori yang ingin Anda cari, atau Anda harus menyediakan direktori sebagai argumen findjuga.

Cara lain untuk melakukan ini adalah menggunakan ls -laR | egrep ^d.

Dan locateperintah itu juga berguna:locate string

belacqua
sumber