August 20, 2015

Tìm kiếm file và thư mục trong Linux sử dụng giao diện dòng lệnh

Sử dụng câu lệnh Find

Câu lệnh Find cho phép người dùng tìm file nếu biết gần đúng tên file. Đây là dạng câu lệnh đơn giản nhất tìm kiếm file trong thư mục hiện tại mà khớp với tiêu chí nhất định. Người dùng có thể tìm kiếm file theo tên, chủ sở hữu, nhóm, loại file, theo quyền, ngày tháng năm và theo nhiều tiêu chí khác.
Gõ câu lệnh sau để liệt kê tất cả các file tìm được trong thư mục hiện tại:
find .
Dấu chấm chỉ thị thư mục hiện tại.
find
Để tìm những file khớp với một mẫu đặc biệt, sử dụng tham số “-name”. Người dùng có thể sử dụng siêu ký tự (như “*”) nhưng phải đặt ký hiệu thoát “\ trước mỗi siêu ký tự.
Ví dụ như, nếu ta muốn tìm tất cả các file mà bắt đầu với “pro” trong thư mục Documents, sử dụng câu lệnh cd Documents/ để chuyển tới thư mục Documents, sau đó gõ câu lệnh sau:
find . –name pro\*
Tất cả những file bắt đầu với “pro” trong thư mục sẽ được liệt kê ra.
Lưu ý: Câu lệnh find mặc định phân biệt chữ hoa và chữ thường. Nếu muốn tìm kiếm một từ hay một cụm từ không phân biệt chữ hoa chữ thường, hãy sử dụng tùy chọn “-iname” cùng câu lệnh find.
tìm tên
Nếu không có file nào phù hợp tiêu chí, sẽ không có kết quả nào hiển thị.
Câu lệnh find có nhiều tùy chọn để lọc tìm kiếm. Để tìm hiểu rõ hơn, gõ “man find” trong cửa sổ Terminal và nhấn Enter.

Sử dụng câu lệnh locate

Câu lệnh locate nhanh hơn câu lệnh find vì nó sử dụng cơ sở dữ liệu được xây dựng trước đó trong khi lệnh find lại tìm kiếm trong hệ thống theo thời gian thực, từ tất cả các thư mục và file. Câu lệnh locate trả về một danh sách tất cả tên đường dẫn chứa nhóm các ký tự đặc biệt.
Cơ sở dữ liệu được cập nhật định kỳ từ cron, nhưng người dùng cũng có thể tự cập nhật bất cứ lúc nào vì vậy có thể nhận được kết quả ngay. Để làm điều này, gõ câu lệnh sau:
sudo updatedb
Nhập mật khẩu.
mật khẩu
Dạng gốc của câu lệnh locate tìm ra tất cả các file trong hệ thống file, bắt đầu từ thư mục gốc mà chứa toàn bộ hay bất cứ phần nào của tiêu chí tìm kiếm.
locate mydata
Ví dụ như, câu lệnh sau đã tìm thấy 2 file chứa “mydata” và 1 file chứa “data”.
locate
Nếu muốn tìm toàn bộ các file hay thư mục chứa chính xác như tiêu chí tìm kiếm, sử dụng tùy chọn “-b” cùng câu lệnh locate như sau:
locate –b’\mydata’
locate2
Lệnh mlocate là một biến thể của locate. Kết quả tìm kiếm chỉ gồm những file mà người dùng hiện tại đã truy cập tới. Khi bạn cập nhật cơ sở dữ liệu mlocate, nó duy trì thông tin tem thời gian trong cơ sở dữ liệu. Việc này cho phép mlocate biết được nếu các nội dung trong một thư mục bị thay đổi mà không cần đọc lại nội dung và cập nhật vào cơ sở dữ liệu nhanh hơn mà ít phụ thuộc vào ổ cứng.
Khi cài đặt mlocate, file nhị phân /usr/bin/locate thay đổi và trỏ tới mlocate. Để cài đặt mlocate khi câu lệnh không có trong bản phân phối Linux, gõ câu lệnh sau:
sudo apt-get install mlocate
mlocate
Lệnh mlocate không sử dụng cùng file cơ sở dữ liệu với câu lệnh locate chuẩn. Do vậy, người dùng có thể tạo cơ sở dữ liệu một cách thủ công bằng cách gõ câu lệnh sau:
sudo /etc/cron.daily/mlocate
Lệnh mlocate sẽ không hoạt động cho đến khi cơ sở dữ liệu được tạo thủ công hay khi script được chạy từ cron.
mlocate database
Để xem thông tin chi tiết về câu lệnh locate và mlocate, gõ man locate hoặc man mlocatetrong cửa sổ lệnh và nhấn Enter. Màn hình trợ giúp sẽ hiện ra.

Sử dụng câu lệnh which

Lệnh which trả về đường dẫn tuyệt đối của file thực thi được gọi khi một lệnh được đưa ra. Điều này hữu ích khi cần tìm vị trí của một file thực thi để tạo một biểu tượng tắt tới chương trình trên màn hình, trên một panel hay ở vị trí khác trong tiện ích quản lý desktop. Ví dụ như, gõ câu lệnhwhich firefox sẽ hiển thị những kết quả như hình dưới.
Lưu ý: Mặc đinh thì câu lệnh which chỉ hiển thị kết quả phù hợp đầu tiên. Để hiện thị toàn bộ kết quả, sử dụng tùy chọn “-a” cùng câu lệnh. Câu lệnh “which firefox” sẽ trở thành “which –a firefox”.
which firefox
Người dùng có thể tìm kiếm nhiều file thực thi cùng một lúc. Chỉ những đường dẫn tới những file thực thi được tìm thấy mới được hiển thị. Trọng ví dụ dưới đây, chỉ file thực thi “ps” được tìm thấy.
tìm nhiều file thực thi
Lưu ý: Câu lệnh which chỉ tìm đường dẫn tới file thực thi mà người dùng hiện tại được phép sử dụng. Nếu tìm kiếm một file thực thi mà chỉ có người quản trị được phép sử dụng, sẽ không có kết quả nào được hiển thị.
Để tìm hiểu thêm thông tin về câu lệnh which, gõ man which ở cửa sổ lệnh và nhấn Enter.

Sử dụng câu lệnh whereis

Lệnh whereis được dùng để tìm kiếm vị trí đặt các file nhị phân, file nguồn hay file “man” cho một chương trình. Ví dụ như, khi gõ whereis firefox” ta sẽ thu được kết quả hiển thị như hình dưới đây.
whereis
Nếu bạn chỉ muốn đường dẫn tới file thực thi hiển thị và không hiển thị đường tới file nguồn và file “man”, sử dụng tùy chọn “-b”. Chẳng hạn như, câu lệnh “whereis –b firefox” sẽ chỉ hiển thị kết quả là “/usr/bin/firefox”. Điều này rất thuận tiện do người dùng thường sẽ tìm kiếm file thực thi chương trình nhiều hơn là tìm kiếm nguồn và file “man” của chương trình đó. Người dùng cũng có thể chỉ tìm kiếm file nguồn (“-s”) hay các file “man” (“-m”).
Để tìm hiểu thông tin chi tiết về câu lệnh, gõ man whereis ở cửa sổ câu lệnh và nhấn Enter.

Sự khác nhau giữa whereis và which

Lệnh whereis chỉ vị trí các file nhị phân, file nguồn và những file “man” với chỉ một câu lệnh, trong khi lệnh which chỉ cho ra vị trí file nhị phân.
Lệnh whereis tìm từ một danh sách thư mục đặc biệt cho file nhị phân, file nguồn và file “man” trong khi lệnh which tìm kiếm các thư mục được liệt kê trong môi trường PATH được phép của người dùng hiện thời. Với lệnh whereis, danh sách thư mục đặc biệt có thể được tìm thấy trong phần FILES của file “man”.
Theo mặc định, lệnh whereis hiển thị mọi kết quả tìm được trong khi lệnh which chỉ hiển thị kết quả đầu tiên tìm được.
Do lệnh whereis chỉ sử dụng đường dẫn đã được nhúng (hard-code) vào câu lệnh, bạn có thể không tìm thấy kết quả mình trông đợi. Nếu bạn đang tìm kiếm một chương trình mà bạn nghĩ có thể đã được cài trong một thư mục mà không được liệt kê trong file “man” của câu lệnh whereis, hãy sử dụng câu lệnh which với tùy chọn “-a” để tìm tất cả kết quả từ hệ thống.

0 comments:

Post a Comment