Tại sao không 'tìm thấy' hiển thị tệp này?


21

Sử dụng findvới grep, người ta có thể định vị các tệp khớp với một mẫu:

# find | grep error
./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html
./error_log
./includes/classes/error_log

Tuy nhiên, không sử dụng findtập tin đầu tiên:

# find . -name error*
./error_log
./includes/classes/error_log

Tại sao không findxác định vị trí errors.htmltệp khi không được sử dụng với grep? Làm thế nào được findsử dụng để hiển thị tập tin này là tốt?

Câu trả lời:


42

Bạn cần trích dẫn lập luận của mình error*vì shell mở rộng nó. Vì vậy, những gì bạn thực sự đang chạy bây giờ là find -name error_logbởi vì đó là những gì shell có thể mở rộng nó (có một tệp có tên error_logtrong thư mục hiện tại của bạn).

find . -name 'error*'

Là lời gọi chính xác cho trường hợp sử dụng của bạn.


12
một văn bản thay thế là find -name error\*- ít hơn một phím để nhấn;) điều này có tác dụng tương tự, *được truyền dưới dạng dấu hoa thị cho lệnh find và không được mở rộng bởi shell của bạn
zhenech

3
Khi gặp sự cố với trình bao (cách nó diễn giải dòng lệnh của bạn và chuyển tất cả các đối số và tham số cho lệnh thực tế), hãy chạy lại lệnh chuẩn bị trước lệnh đó echo. Vì vậy, nếu bạn chạy, echo find . -name error*nó sẽ xuất rafind . -name error_log
Carlos Campderrós
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.