Tôi cố gắng tìm kiếm các dòng bắt đầu bằng "1" bằng cách sử dụng
ls -1 | grep ^1*
nhưng nó trả về các dòng không bắt đầu bằng 1. Tôi đang thiếu gì ở đây?
Tôi cố gắng tìm kiếm các dòng bắt đầu bằng "1" bằng cách sử dụng
ls -1 | grep ^1*
nhưng nó trả về các dòng không bắt đầu bằng 1. Tôi đang thiếu gì ở đây?
Câu trả lời:
Mặc dù điều này không trả lời câu hỏi của bạn, đây là một giải pháp tốt hơn cho những gì dường như là mục tiêu của bạn:
ls -ld 1*
Bạn có thể sử dụng shell toàn cầu để liệt kê tất cả các tệp bắt đầu bằng 1
. Lưu ý rằng *
có một ý nghĩa khác trong toàn cầu vỏ so với biểu thức thông thường.
*
là ký tự đại diện có nghĩa là "0 hoặc nhiều hơn bất kỳ ký tự nào ". Ý nghĩa regex được giải thích trong câu trả lời của otokan.
^ 1. * khớp với toàn bộ dòng, hoặc như đã nói ở trên, ^ 1 có chuỗi chứa trong dòng.
các kiểu regex khác nhau sử dụng các ký hiệu khác nhau đại diện cho ký tự, một số tùy chọn chỉ định kiểu bạn muốn. và các tùy chọn khác nhau xác định xem bạn muốn khớp toàn bộ dòng hay chỉ một phần của dòng đó hoặc toàn bộ đầu vào dưới dạng một chuỗi.
ls
đầu ra, bạn sẽ gặp vấn đề nếu tên tệp chứa một số ký tự lạ, chẳng hạn như dòng mới ... Nhiều lệnh khác (ls
ít nhất là không phải là phiên bản mà tôi phải kiểm tra) có một tùy chọn để cung cấp đầu ra tách biệt null, sau đó bạn có thể xử lý một cách an toàn vớigrep -z