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 {} \;

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.


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 {} \;

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.
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.