grep mà không hiển thị đường dẫn / tập tin: dòng


234

Làm thế nào để bạn grep và chỉ trả lại dòng phù hợp? tức là đường dẫn / tên tệp được bỏ qua khỏi kết quả.

Trong trường hợp này tôi muốn tìm trong tất cả các tệp .bar trong thư mục hiện tại, tìm kiếm cụm từ FOO

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

Câu trả lời:


375

Không cần find. Nếu bạn chỉ tìm kiếm một mẫu trong một thư mục cụ thể, điều này sẽ đủ:

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

Đâu -hlà tham số để ẩn tên tệp, như từ man grep:

-h, --no-tên tệp

Loại bỏ tiền tố của tên tệp trên đầu ra. Đây là mặc định khi chỉ có một tệp (hoặc chỉ đầu vào tiêu chuẩn) để tìm kiếm.

Lưu ý rằng bạn đang sử dụng

-H, - với tên tệp

In tên tập tin cho mỗi trận đấu. Đây là mặc định khi có nhiều hơn một tệp để tìm kiếm.


số dòng có thể được bỏ qua?
javadba

@javadba có lẽ bạn đang sử dụng một bí danh, loại alias grep. Để bỏ qua bí danh, gõ\grep ...
fedorqui 'SO ngừng gây hại'

1
Có nó đã được sử dụng bí danh.
javadba

8

Chỉ cần thay thế -Hbằng -h. Kiểm tra man grepđể biết thêm chi tiết về các tùy chọn

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

6

Từ trang người đàn ông:

-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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.