Mặc dù tất cả các câu trả lời ít nhiều giống nhau, tôi không tìm thấy chúng có thể đọc được với nhiều toán tử Boolean ở giữa.
Tôi nghĩ rằng đây có thể là giải pháp thanh lịch hơn:
$ find . -type f | grep -E "\.java$|\.cpp$|\.c$"
Chúng ta hãy phá vỡ điều này
find . tìm tất cả các tệp đệ quy trong đường dẫn hiện tại (thay đổi một số đường dẫn khác nếu bạn cần)
-type fthu hẹp tìm kiếm chỉ với các tệp (không tăng quá nhiều tốc độ, nhưng vẫn ...)
| grep -ETôi sử dụng này để có được grep nhận hoặc ( |) điều hành trong Mac OS X trong đó sử dụng FreeBSD grep , GNU grep không cần điều đó (check in của bạn mantập tin).
"\.java$|\.cpp$|\.c$"biểu thức chính quy trong đó bao gồm các file có tên đầu với .java, .cppvà .c(add cái bạn cần)
Sau đó, bạn có thể dẫn danh sách kết quả để xử lý thêm, ví dụ:
$ find . -type f | grep -E "\.java$|\.cpp$|\.c$" | xargs sed -i '' $'/s/\r$//'
Ví dụ này loại bỏ CRLFdòng kết thúc DOS / Windows cho OS X / Linux LF(đây cũng là sedcú pháp OS X , kiểm tra thông tin cụ thể về phiên bản của bạn).
findlệnh, vì đó là nơi bạn đang tìm kiếm các tệp phù hợp.