grep digunakan untuk mencari dalam suatu file untuk melihat apakah ada baris yang cocok dengan ekspresi reguler yang diberikan. Namun, saya memiliki situasi ini - saya ingin menulis ekspresi reguler yang akan cocok dengan nama file itu sendiri (dan bukan isi file). Saya akan menjalankan ini dari direktori root sistem, untuk menemukan semua file yang cocok dengan ekspresi reguler.
Misalnya, jika saya ingin menemukan semua file formulir VB yang dimulai dengan "f" dan diakhiri dengan .frm, saya akan menggunakan ekspresi reguler -
"f[[:alnum:]]*\.frm"
Bisakah grep melakukan ini? Jika tidak, apakah ada utilitas yang memungkinkan saya melakukan ini? Terima kasih.
-regex
opsi.Contoh
Dari manual:
temukan pola -nama
Basis nama file (jalur dengan direktori utama dihapus) cocok dengan pola pola shell. Karena direktori utama dihapus, nama file yang dianggap cocok dengan -nama tidak akan menyertakan slash, jadi "-nama a / b" tidak akan pernah cocok dengan apa pun (Anda mungkin perlu menggunakan -path sebagai gantinya). Metakarakter ("*", "?", Dan "[]") cocok dengan "." di awal nama dasar (ini adalah perubahan pada find-utils-4.2.2; lihat bagian KONVERSI STANDAR di bawah). Untuk mengabaikan direktori dan file di bawahnya, gunakan -prune; lihat contoh dalam deskripsi -path. Kawat gigi tidak diakui sebagai istimewa, terlepas dari kenyataan bahwa beberapa cangkang termasuk Bash imbes kawat gigi dengan makna khusus dalam pola cangkang. Pencocokan nama file dilakukan dengan menggunakan fungsi perpustakaan fnmatch (3). Jangan lupa untuk menyertakan pola dalam tanda kutip untuk melindunginya dari ekspansi oleh shell.
sumber
find . -maxdepth 1 -name "*filename*" -print
Seperti Pablo mengatakan, Anda perlu menggunakan
find
bukangrep
, tapi ada tidak perlu pipafind
kegrep
.find
memiliki fungsionalitas bawaan:find
adalah program yang sangat kuat untuk mencari file dengan nama dan mendukung pencarian berdasarkan tipe file, pembatasan kedalaman, menggabungkan berbagai istilah pencarian dengan operasi boolean, dan menjalankan perintah sewenang-wenang pada file yang ditemukan. Lihat halaman manual find untuk informasi lebih lanjut.sumber
-mtime
dan-mmin
Anda dapat menemukan path lengkap file menggunakan grep, cukup pipa output tree
Berikut adalah fungsi yang dapat Anda masukkan ke .bash_profile atau .bashrc Anda
sumber
type_descriptor types: -
f: file biasa
d: direktori
l: tautan simbolik
c: perangkat karakter
b: blokir perangkat
sumber
-type typedescriptor
saja. Apakah ini sebuah kesalahan?Anda juga dapat melakukan:
Ini mem-pipe output dari perintah tree ke grep untuk pencarian. Ini hanya akan memberi tahu Anda apakah file tersebut ada.
sumber
Tidak, grep bekerja dengan baik untuk ini:
sumber
-l
maupun-L
opsi.Juga untuk banyak file.
sumber
Cara termudah adalah
di sini temukan akan mendaftar semua file dalam direktori (.) yaitu saat ini, secara rekursif. Dan kemudian itu hanya langkah sederhana. semua file yang namanya "test" akan muncul.
Anda dapat bermain dengan grep sesuai kebutuhan Anda. Catatan: Karena grep adalah klasifikasi string umum, grep dapat memberikan Anda tidak hanya nama file. tetapi jika path memiliki direktori ('/xyz_test_123/other.txt') juga akan muncul pada set hasil. Bersulang
sumber
./foo/bar/latest/fred.txt
.