2011-12-16 21 views
18

Tôi cần phải grep để tấn (10k +) tệp cho các từ cụ thể. bây giờ trả về một danh sách các tập tin mà tôi cũng cần phải grep cho một từ khác.mở 100 tệp trong vim

tôi tìm thấy trên grep có thể làm điều này vì vậy tôi sử dụng:

grep -rl word1 * 

mà trả về danh sách các file tôi muốn kiểm tra. bây giờ từ các tệp này (100+), tôi cần grep từ khác. vì vậy tôi phải làm một grep

vim `grep word2 `grep -rl word1 *`` 

nhưng đó bị treo, và nó không làm gì cả,

tại sao?

Trả lời

35

Bởi vì bạn có một đôi ', bạn cần phải sử dụng $()

vi `grep -l 'word2' $(grep -rl 'word1' *)` 

Hoặc bạn có thể sử dụng lồng nhau $(...) (như goblar đề cập)

vi $(grep -l 'word2' $(grep -rl 'word1' *)) 
+0

cảm ơn bạn đã đặt nó hoạt động – Giraldo

+0

bạn rất hoan nghênh (vui lòng đọc: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

+3

hoặc bạn có thể sử dụng $ (... $ (...)) – goblar

20
grep -rl 'word1' | xargs grep -l 'word2' | xargs vi 

là một tùy chọn .

+0

mã của bạn bị hỏng: grep -rl 'word1' | - bạn sử dụng 'và ' – Adam

+0

Cảm ơn, @Adam, đã được sửa. –

Các vấn đề liên quan