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 f
thu 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 -E
Tô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 man
tậ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
, .cpp
và .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ỏ CRLF
dòng kết thúc DOS / Windows cho OS X / Linux LF
(đây cũng là sed
cú pháp OS X , kiểm tra thông tin cụ thể về phiên bản của bạn).
find
lệnh, vì đó là nơi bạn đang tìm kiếm các tệp phù hợp.