grep tanpa menunjukkan path / file: line

234

Bagaimana Anda memahami dan hanya mengembalikan garis yang cocok? yaitu Path / nama file dihilangkan dari hasil.

Dalam hal ini saya ingin melihat semua file .bar di direktori saat ini, mencari istilah FOO

find . -name '*.bar' -exec grep -Hn FOO {} \;
Allan Thomas
sumber

Jawaban:

375

Tidak perlu find. Jika Anda hanya mencari pola dalam direktori tertentu, ini sudah cukup:

grep -hn FOO /your/path/*.bar

Di mana -hparameter untuk menyembunyikan nama file, seperti dari man grep:

-h, --no-filename

Menekan awalan nama file pada output. Ini adalah default ketika hanya ada satu file (atau hanya input standar) untuk dicari.

Perhatikan bahwa Anda menggunakan

-H, --dengan nama file

Cetak nama file untuk setiap kecocokan. Ini adalah default ketika ada lebih dari satu file untuk dicari.

fedorqui 'SO berhenti merugikan'
sumber
bisakah nomor baris dihilangkan?
javadba
@javadba Anda mungkin menggunakan alias, ketik alias grep. Untuk menghilangkan alias, ketik\grep ...
fedorqui 'SO stop harming'
1
Ya itu menggunakan alias.
javadba
8

Ganti saja -Hdengan -h. Periksa man grepdetail lebih lanjut tentang opsi

find . -name '*.bar' -exec grep -hn FOO {} \;
jkshah
sumber
6

Dari halaman manual:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
TC1
sumber