Hỏi về lệnh trong linux

chào mọi người. Cho em hỏi trong linux để tìm kiếm tất cả các file có chứa kí tự (ví dụ log) trong 1 thư mục mình dùng lệnh gì ạ

Bạn có thể dùng lệnh grep với cú pháp như sau:

grep -Rni <chuỗi ký tự cần tìm> <thư mục cần tìm>
  • R hay r: recursive. Dùng tham số này khi bạn muốn tìm trong tất cả các thư mục con của thư mục được chỉ định trong “thư mục cần tìm”.
  • n: line number. Dùng tham số này khi bạn muốn lệnh hiển thị số dòng trong file có chuỗi cần tìm
  • i: ignore case. Dùng tham số này khi bạn muốn tìm chuỗi không phân biệt chữ hoa và chữ thường.
  • <chuỗi ký tự cần tìm>: chuỗi bạn muốn tìm. Nếu chuỗi cần tìm có nhiều hơn một từ (ví dụ như “Duyenn Thangg”) thì bạn cần đặt nó trong dấu ’ hoặc " . Nếu là từ đơn thì không cần.
  • <thư mục cần tìm>: đường dẫn đến thư mục bạn muốn tìm. Nếu bạn muốn tìm trong tất cả các file trong hệ thống thì bạn bắt đầu từ thư mục root (/). Nếu bạn muốn tìm trong thư mục hiện hành thì bạn có thể dùng ký tự “.” (theo quy ước “.” đại diện cho thư mục hiện hành, “..” đại diện cho thư mục parent của thư mục hiện hành). Trong các trường hợp khác, bạn có thể đặt đường dẫn tương đối hoặc tuyệt đối ở đây.

Ví dụ: tôi muốn tìm một chuỗi là “Debra” trong các tập tin trong thư muc hiện hành và các thư mục con của nó, tôi dùng lệnh sau:

grep -Rnwi  debra .

Kết quả như sau:

./UserAndOrg.txt:195:User: Debra Mooney

Có một kết quả nằm trong dòng thứ 195 của tập tin UserAndOrg.txt trong thư mục hiện hành chứa chuỗi này (Debra) và nó là một phần của một dòng văn bản là “Debra Mooney”.

Tôi sẽ để bạn tự tìm hiểu tham số “w” trong lệnh trên nghĩa là gì. Bạn có thể tìm hiểu cách sử dụng lệnh grep (kèm theo tất cả các tham số của nó - ở đây tôi chỉ liệt kê vài tham số mà thôi) trong Linux bằng cách dùng lệnh man grep. Bạn cũng có thể dùng lệnh man để tìm hiểu bất kỳ lệnh nào trong Linux (man = manual).

Nếu có ý định học và sử dụng Linux lâu dài, bạn nên tìm hiểu thêm một số lệnh thông dụng như grep, awk, sed … Đây là các lệnh rất có ích để xử lý chuỗi và text file trong Linux/Unix.

5 Likes

Cám ơn anh nha. :)))))

À anh ơi cho em hỏi một câu nữa. Em có thể dùng grep để hiển thị tên các file mà tên của nó chứa 1 chuỗi nhất định không ạ. Ví dụ trong mục exercise có các file pass1 pass2 pass3 poem. Em có thể dùng lệnh grep để hiện thị danh sách các file mà tên của nó có chứa “pass” không ạ

Nếu để tìm file với filename thì bạn nên sử dụng lệnh find. Ví dụ:

find exercise/ -iname "pass*"

Tôi sẽ để bạn từ tìm hiểu ý nghĩa của các tham số trong ví dụ trên nhé.

4 Likes

Yep, em làm được rồi :v:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?