Tôi là một người mới chơi linux. Tôi cần tìm kiếm một chuỗi "chuỗi thử nghiệm" trong tất cả các tệp * .java dưới / home / user1 / (bao gồm cả các thư mục con). Làm thế nào tôi có thể làm điều đó trong linux thông qua lệnh shell.
Tôi là một người mới chơi linux. Tôi cần tìm kiếm một chuỗi "chuỗi thử nghiệm" trong tất cả các tệp * .java dưới / home / user1 / (bao gồm cả các thư mục con). Làm thế nào tôi có thể làm điều đó trong linux thông qua lệnh shell.
Câu trả lời:
Cách dễ nhất là sử dụng các tính năng của GNU grep:
grep -r --include '*.java' teststring /home/user1
Nếu bạn đã từng sử dụng một biến thể unix khác không có GNU grep, thì đây là một cách di động:
find /home/user1 -name '*.java' -exec grep teststring {} +
grep -r teststring .
sử dụng ack bạn chỉ cần gõ:cd /home/user01 && ack --java teststring
ack --java teststring /home/user01
Tìm thấy rồi. Đăng nó vì nó có thể giúp một ai đó.
find /home/user01 -name *.java | xargs grep "teststring"
Vui lòng sửa nếu có cách nào tốt hơn.
-print0
và -0
khi đường ống find
vào xargs
hoạt động chính xác với các tệp có thể có dấu cách hoặc dòng mới trong tên của chúng:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"