Tìm kiếm đầu tiên với ack hoặc grep


11

Khi tôi tìm kiếm, ví dụ như thư mục chính của tôi với ack(hoặc grep), tôi thường muốn biết nơi tôi đặt một tùy chọn cụ thể.

Vì hầu hết các tệp cấu hình thực sự gần với ~nó sẽ tăng tốc đáng kể acknếu tôi có thể tìm kiếm theo chiều rộng đầu tiên. Điều này có thể không?


1
Đáng buồn là câu trả lời dường như là không.
Nifle

4
Có vẻ như cứ sau vài tháng tôi lại google cái này và quay lại trang này.
Gregory Nisbet

2
@GregoryNisbet Giải pháp “của tôi đã được chuyển sang ag, nhanh hơn khoảng 5 lần10 lần ackvà không có nhược điểm nào. Kết hợp với việc chuyển sang SSD tôi đã không gặp vấn đề gì kể từ đó.
Profpatsch

Câu trả lời:


3

Tôi không biết acknhưng với các công cụ như greptôi thường sử dụng:

( find . -maxdepth 1 -print ; find . -mindepth 2 -print ) | xargs -n 50 -exec grep TXT

Phần giữa ()đảm bảo rằng các tệp đầu tiên ở cấp 1 được liệt kê và sau đó là các tệp ở mức 2 trở xuống (bạn có thể thay đổi). xargscung cấp tên tệp cho mỗi 50 đến grep.

Tất nhiên, nó phụ thuộc vào biến thể findnào có sẵn trên nền tảng của bạn. Nếu chạy một cái gì đó từ 30 năm trước, bạn sẽ cần phải sử dụng một cái gì đó như sắp xếp theo số lượng dấu gạch chéo về phía trước.


MMV (Archlinux):grep: ./.macromedia/Flash_Player/#SharedObjects/Q2GSRK6Y/www.mixcloud.com/media: Is a directory
xtian

Nếu bạn sẽ không sử dụng -print0để tìm, ít nhất là làm find . -maxdepth 1 -exec grep {} +;. mywiki.wooledge.org/BashFAQ/020
Chuộc tội có giới hạn
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.