Saya mencoba menggunakan perintah temukan untuk menemukan file di folder rumah saya, namun setiap kali saya mencoba dan menjalankan ini saya tidak mendapatkan hasil:
locate -i -l 4 --regexp '^\/home\/jack\/[A-Za-z0-9\/\ ]*(My.)*$'
Saya juga sudah mencoba ^\/home\/jack\/^(?!\.)[A-Za-z0-9\/\ ]*(My.)*$
tetapi tidak mengembalikan hasil juga.
File yang saya cari hanya untuk mengujinya /home/jack/Music/Foals/My Number.flac
Saya ingin mengecualikan hasil file tersembunyi dari pencarian saya.
bash
regular-expression
locate
Jack Jones
sumber
sumber
locate
. Apakah masuk akal untuk menggabungkan-b
(yaitu "Cocokkan hanya nama dasar dengan pola yang ditentukan.") Dengan jalur di--regexp
? Mengapa Anda melarikan diri/
?(My.)*
seharusnya dilakukan?My.*$
bekerja. Anda harus melarikan diri()
dalam RE dasar.--regexp
butuh regex dasar. Coba ubah--regexp
ke--regex
(tidakp
). Halaman manual mengatakan--regex
tidak cocok pencocokan regex.Jawaban:
Ini sepertinya melakukan pekerjaan.
Kutipan dari manual:
sumber
Bagaimana cara kerjanya?
Indeks file yang
locate
menggunakan perintah hanya dibangun kembali sekali sehari, biasanya. Ini dibangun oleh pekerjaan cron ini/etc/cron.daily/mlocate
,. Jadi entri Anda kemungkinan belum ada di sana. Anda dapat menjalankannya kembali jika Anda ingin secara manual membangun kembali indeks ini.Menggunakan find
Namun Anda mungkin lebih baik menggunakan perintah seperti
find
untuk mencari file di direktori home Anda.Menggunakan GUI
Anda juga mungkin tertarik dengan alat pencarian grafis. Lihatlah Q&A Q&A lainnya yang berjudul: GTK Frontend untuk mencari yang mencakup satu alat yang disebut Catfish. Alat ini dapat menggunakan
locate
data dan jugafind
perintah.sumber
locate
lebih cepat daripadafind
jika saya harus melakukan yangupdatedb
pertama. Selama database sudah cukup mutakhir pada kebanyakan sistemupdatedb
tidak akan lama. Menemukan sintaks mungkin lebih mudah dalam hal ini.find
.Anda juga bisa mengambil pendekatan yang berbeda:
Saya tidak yakin apa yang Anda coba lakukan. Anda menggunakan
-i
bendera untuk membuatnya kasus sensitif dan regex Anda tidak sangat spesifik, Anda tampaknya atas keinginan untuk menemukan semua file atau folder yang berada di bawah/home/jack
dan yang mengandungMY
,My
,my
, ataumY
di mana saja di nama file. Jika demikian, jalankan sajasumber
Ini seharusnya berfungsi - hanya cocok dengan file dan folder yang tidak disembunyikan:
lebih sederhana - ini cocok dengan file yang tidak memiliki direktori tersembunyi di mana saja di pohon direktori. Mungkin ini yang Anda inginkan:
sumber
locate
, karena saya mencoba mengintegrasikannya ke dalam GUI Python untuk mencari saat Anda mengetik dan lebih cepat. Tapi Terimakasih!locate
mempercepat hasilnya. Misalnya:echo /home/jack/**/*My.*