Tìm một tập tin trong đó tên bắt đầu bằng chữ in hoa


14

Tôi đang cố gắng tìm tất cả các tệp có tên bắt đầu bằng chữ in hoa. Tôi đã thử sử dụng lệnh sau:

find . -type f -regex '.*\/[A-Z][^/]*'

Đó là tìm đường dẫn chỉ có chữ thường. Các công việc sau đây:

find . -type f -regex '.*\/[ABCDEFGHIJKLMNOPQRSTUVWXYZ][^/]*'

Cũng như:

find . -type f | grep '.*\/[A-Z][^/]*$'

Tôi đã thử tất cả các tùy chọn khác nhau regextype, với cùng một kết quả.

Tại sao không findbao gồm chữ thường trong [A-Z]? Tôi nghĩ rằng regex cho điều đó là [a-zA-Z]. Có cách nào để chỉ định một phạm vi chỉ các chữ cái in hoa findkhông?


5
Thế còn LC_ALL=C find ...?
mikeerv

Điều đó làm việc. Bạn có thể giải thích tại sao trong một câu trả lời?
Karl Bielefeldt

3
Tôi có thể thử, nhưng sau đó bạn có thể bỏ lỡ điều này .
mikeerv

1
Tại sao bạn thoát khỏi dấu gạch chéo ( \/)? Ngoài ra những gì tìm thấy bạn đang sử dụng ( find --version)?
Cristian Ciupitu

1
Thoát /chỉ cần thiết khi bạn đang sử dụng nó như một dấu phân cách, ví dụ như trong s/foo\/bar/foobar/. (Nhưng thường thì bạn có thể sử dụng một số dấu phân cách khác : s#foo/bar#foobar#.)
deltab

Câu trả lời:


35

Bạn không cần sử dụng -regex. Bạn có thể sử dụng -namethay thế.

find . -type f -name "[[:upper:]]*"
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.