FreeBSD 9: Bagaimana cara mencari nama file yang tepat?


10

Mencoba menggunakan locateperintah untuk menemukan kecocokan tepat untuk pola yang diberikan. Namun hasilnya menunjukkan semua file yang cocok ..

Sebagai contoh: Saya ingin mencari biner bernama: node

Tapi itu memberi saya semua kecocokan yang mengandung kata ini:

server2# locate node
/usr/share/man/man9/getnewvnode.9.gz
/usr/share/man/man9/ieee80211_amrr_node_init.9.gz
/usr/share/man/man9/ieee80211_dump_node.9.gz
/usr/share/man/man9/ieee80211_dump_nodes.9.gz
/usr/share/man/man9/ieee80211_find_rxnode.9.gz
/usr/share/man/man9/ieee80211_find_rxnode_withkey.9.gz
/usr/share/man/man9/ieee80211_free_node.9.gz

Jawaban:


10

Jika Anda melihat locate --help, Anda mungkin menemukan:

  -r, --regexp REGEXP    search for basic regexp REGEXP instead of patterns
      --regex            patterns are extended regexps

Anda dapat menggunakan -runtuk menyediakan pola regexp ke locate:

locate -r /node$

The /Memastikan nodeadalah pada awal nama file. The $Memastikan nodeadalah pada akhir nama file. Ini akan memberi Anda hanya file yang cocok dengan nama file yang tepat.

Jika Anda ingin melakukan pencarian case-insensitive (pertandingan Node, NODE, nOdE, dll), tambahkan -i:

locate -i -r /node$

Jika locat tidak mendukung regexp, Anda dapat menggunakan grep (seperti yang disebutkan oleh Iracicot):

locate node | grep /node$
locate -i node | grep -i /node$

Atau, Anda dapat menggunakan -bsakelar untuk hanya mencocokkan dengan nama samaran:locate -br node$
Sarke

6

Anda dapat menggunakan grep dengan loc

server2# locate node | grep node$

Tanda $ akan memberi tahu grep untuk melihat bagian akhir dari string.


1
Hasilnya sama. Ini menampilkan berbagai pertandingan yang berakhir dengan simpul ... / usr / ports / www / p5-WebService-Linode. Saya kira itu seharusnya / simpul $?
Alex G

Ya, Anda juga dapat mencoba ini (Tapi saya tidak yakin apakah karakternya harus diloloskan atau tidak). Sudahkah Anda mencoba mencari -b?
lracicot

0

Nonaktifkan locateglob implisit dengan menambahkan glob Anda sendiri yang cocok dengan semua direktori:

locate */node

Dari halaman manual:

Jika ada yang PATTERNtidak mengandung karakter globbing, cari berperilaku seolah-olah polanya*PATTERN*

Sintaks ini akan cocok dengan file lengkap atau nama direktori di mana saja, termasuk di root.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.