Tôi đang sử dụng thành công việc tìm kiếm để tạo danh sách tất cả các tệp trong thư mục con hiện tại, ngoại trừ các tệp trong thư mục con "bộ nhớ cache". Đây là đoạn mã đầu tiên của tôi:Đường ống tìm kết quả vào grep để loại trừ thư mục nhanh
find . -wholename './cach*' -prune -o -print
Bây giờ tôi muốn đặt lệnh này vào lệnh grep. Có vẻ như đơn giản như vậy:
find . -wholename './cach*' -prune -o -print | xargs grep -r -R -i "samson"
... nhưng đây là kết quả trả về chủ yếu từ thư mục bộ nhớ cache. Tôi đã thử loại bỏ các tham chiếu xargs, nhưng điều đó làm những gì bạn mong đợi, chạy grep trên văn bản của tên tập tin, thay vì trên các tập tin mình. Mục tiêu của tôi là tìm "samson" trong bất kỳ tệp nào không có nội dung được lưu trong bộ nhớ cache.
Có lẽ tôi sẽ giải quyết vấn đề này bằng cách chỉ sử dụng số lần tăng gấp đôi trong trường hợp này, nhưng tôi rất tò mò về lý do tại sao một lớp lót này hoạt động theo cách này. Tôi rất muốn nghe suy nghĩ về một cách để sửa đổi nó trong khi vẫn sử dụng hai lệnh này (vì có lợi thế về tốc độ để thực hiện theo cách này).
(Đây là trong CentOS 5, btw.)
Cảm ơn! Việc loại bỏ đệ quy là những gì đã làm các trick cho tôi. Ngẫu nhiên, đó là một sự nhầm lẫn về phía tôi, vì tôi thường sử dụng "-r-i -I", điều này có ý nghĩa hơn nhiều so với các cờ đệ quy dư thừa.) Phần "wholename" là tốt, vì thư mục con không mong muốn thực sự ở cấp thư mục gốc của thư mục hiện hành. Vì vậy, bây giờ là: 'tìm. -wholename './cach*' -prune -o -print | xargs grep -i -I "samson" ' – eternalnewb
Tuyệt vời, vui vì nó là cái gì đó đơn giản =] – newfurniturey