Ngoài sử dụng giao diện trình quản lý file, người dùng có thể sử dụng một số cách khác để tìm kiếm các file và thư mục trên Linux. Dưới đây Taimienphi.vn sẽ hướng dẫn bạn cách tìm file và thư mục trên Linux bằng cách sử dụng tiện ích dòng lệnh sau khi truy cập nhanh Terminaltrên Linux.
Sử dụng lệnh Find
Lệnh find cho phép người dùng tìm kiếm các file và thư mục trên Linux mà họ biết gần chính xác tên file. Về cơ bản lệnh find tìm kiếm các file trong thư mục hiện tại và đệ quy thông qua các thư mục con phù hợp với các tiêu chí tìm kiếm được cung cấp. Người dùng có thể tìm kiếm các file theo tên, chủ tên file, nhóm, phân loại, quyền cho phép, ngày tháng, và các tiêu chí khác.
Nhập lệnh dưới đây vào cửa sổ Terminal để kiệt kê danh sách tất cả các file được tìm thấy trong thư mục hiện tại:
find .
Dấu chấm sau lệnh find cho biết tìm kiếm trong thư mục hiện tại.
Để tìm kiếm file phù hợp với một mẫu cụ thể, sử dụng đối số -name. Bạn có thể sử dụng các ký tự đạo diện tên file (chẳng hạn như * ), nhưng nên đặt ký tự thoát ( \ ) vào trước mỗi tên file hoặc đặt tên file trong dấu ngoặc kép.
Chẳng hạn nếu muốn tìm kiếm tất cả các file bắt đầu bằng "pro" trong thư mục Documents, bạn sử dụng lệnh cd Documents/ để thay đổi thư mục Documents và nhập lệnh dưới đây vào:
find . -name pro\*
Tất cả các file trong thư mục hiện tại bắt đầu bằng "pro" sẽ được liệt kê.
Lưu ý: Lệnh find mặc định sẽ phân biệt chữ hoa và chữ thường. Nếu muốn tìm kiếm 1 từ hoặc cụm từ để không phân biệt chữ hoa chữ thường, bạn sử dụng tùy chọn -iname với lệnh find.
Nếu không tìm thấy các file phù hợp với các tiêu chí của bạn, lệnh sẽ không xuất ra.
Lệnh find có rất nhiều tùy chọn để tinh chỉnh tìm kiếm. Để biết thêm thông tin về lệnh find, nhập lệnh man find vào cửa sổ Terminal rồi nhấn Enter.
Sử dụng lệnh Locate
Lệnh locate nhanh hơn 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 tìm kiếm trong hệ thống thực, thông qua tất cả các thư mục và file thực tế. Lệnh locate trả về danh sách tất cả các tên đường dẫn có chứa các nhóm ký tự được chỉ định.
Cơ sở dữ liệu được cập nhật định kỳ từ cron, nhưng bạn có thể cập nhật bất cứ lúc nào để cập nhật kết quả tìm kiếm. Để làm được điều này, bạn nhập lệnh dưới đây vào cửa sổ Terminal:
sudo updatedb
Nhập mật khẩu khi được thông báo.
Về cơ bản lệnh locate xác định tất cả các file trên hệ thống tập tin, bắt đầu từ root, có chứa tất cả hoặc bất kỳ phần nào trong tiêu chí tìm kiếm.
locate mydata
Ví dụ lệnh trên tìm thấy 2 file có chứa "mydata" và 1 file có chứa "data".
Nếu muốn tìm kiếm tất cả các file hoặc thư mục có chứa chính xác và chỉ chứa các tiêu chí tìm kiếm của bạn, sử dụng tùy chọn -b cùng lệnh locate:
locate -b '\mydata'
Dấu gạch chéo ngược trong lệnh trên là ký tự đại diện, cung cấp cách mở rộng các ký tự đại diện trong 1 file không cụ thể thành 1 tập hợp các file cụ thể. Một ký tự đại diện là một biểu tượng có thể được thay thế bằng một hoặc nhiều ký tự khi biểu thức được đánh giá.
Các ký tự đại diện phổ biến nhất là dấu hỏi chấm (?), viết tắt cho một ký dự đơn và dấu hoa thị (*), viết tắt chuỗi ký tự tiếp giáp. Trong ví dụ trên dấu gạch chéo ngược vô hiệu hóa thay thế ẩn "mydata" bằng "*mydata*" để hiển thị kết quả chỉ chứa "mydata".
Lệnh mlocate là lệnh mới được triển khai từ locate. Lệnh chỉ mục toàn bộ hệ thống tập tin, nhưng kết quả tìm kiếm chỉ bao gồm các file mà người dùng hiện tại có quyền truy cập. Khi bạn cập nhật cơ sở dữ liệu mlocate, nó sẽ giữ thông tin timestamp trong cơ sở dữ liệu. Điều này cho phép mlocate biết được nếu nội dung của 1 thư mục thay đổi mà không cần đọc lại nội dung, cập nhật cơ sở dữ liệu nhanh hơn và ít động đến ổ cứng hơn.
Khi cài đặt mlocte, file /usr/bin/locate binary sẽ thay đổi để trỏ đến mlocate. Để cài đặt mlocate, nếu chưa có trong bản phân phối Linux, bạn nhập lệnh dưới đây vào cửa sổ Terminal:
sudo apt-get install mlocate
Lệnh mlocate không sử dụng cùng một file cơ sở dữ liệu với lệnh chuẩn locate. Vì vậy nếu muốn tạo cơ sở dữ liệu bằng tay, bạn nhập lệnh dưới đây vào:
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 bằng tay bằng khi script được chạy từ cron.
Để biết thêm thông tin về lệnh locate hoặc mlocate, bạn nhập man locate hoặc man mlocate vào cửa sổ Terminal rồi nhấn Enter.
Sử dụng lệnh Which
Lệnh which trả về đường dẫn tuyệt đối của file thực thi được gọi. Điều này hữu ích trong việc tìm kiếm vị trí của một file thực thi để tạo shortcut cho chương trình trên máy tính, bảng điều khiển hoặc các vị trí khác trong trình quản lý desktop. Ví dụ nhập lệnh which firefox để hiển thị các kết quả như hình dưới đây:
Theo mặc định, lệnh which chỉ hiển thị file thực thi đầu tiên phù hợp. Để hiển thị tất cả các file thực thi phù hợp, bạn sử dụng thêm tùy chọn -a với lệnh:
which -a firefox
Ngoài ra bạn có thể tìm kiếm nhiều file thực thi bằng cách thêm các file cùng một lúc như hình dưới đây. Chỉ có các đường dẫn đến file thực thi được hiển thị. Trong ví dụ dưới đây chỉ có file thực thi "ps" được tìm thấy.
Lưu ý: Lệnh which chỉ tìm kiếm biến PATH của người dùng hiện tại. Nếu tìm kiếm file thực thi có sẵn cho người dùng root như người dùng thông thường, sẽ không có kết quả nào được hiển thị.
Để biết thêm thông tin về lệnh which, nhập man which vào cửa sổ Terminal rồi nhấn Enter.
Sử dụng lệnh Whereis
Lệnh whereis được sử dụng để tìm vị trí các file nhị phân, nguồn và trang file man cho một lệnh. Ví dụ nhập lệnh whereis firefox vào cửa sổ Terminal và kết quả hiển thị như hình dưới đây:
Nếu chỉ muốn hiển thị đường dẫn đến file thực thi, chứ không phải đường dẫn đến nguồn và trang man(ual), sử dụng tùy chọn -b. Ví dụ, lệnh whereis -b firefox sẽ chỉ hiển thị/usr/bin/firefox là kết quả tìm kiếm. Điều này rất hữu ích vì trong hầu hết các trường hợp bạn chỉ cần tìm kiếm file thực thi của các chương trình nhiều hơn là tìm kiếm các trang nguông và trang man của chương trình đó. Ngoài ra bạn có thể tìm kiếm các file mã nguồn mở (-s) hoặc chỉ tìm kiếm các trang man (-m).
Để biết thêm thông tin về lệnh whereis, nhập lệnh man whereis vào cửa sổ Terminal rồi nhấn Enter.
Sự khác nhau giữa lệnh Whereis và lệnh Which
Lệnh whereis cho bạn biết vị trí các trang nhị phân, nguồn và trang man của một lệnh, còn lệnh which chỉ hiển thị vị trí nhị phân của lệnh.
Lệnh whereis tìm kiếm thông quan danh sách các thư mục cụ thể cho các file nhị phân, nguồn và file man, còn lệnh which tìm kiếm các thư mục được liệt kê trong môi trường biến PATH. Với lệnh whereis, danh sách các thư mục cụ thể có thể được tìm thấy trong phần FILES trên trang man của lệnh.
Khi nói đến các kết quả được hiển thị theo mặc đinh, lệnh whereis sẽ hiển thị mọi thứ nó tìm được, còn lệnh which chỉ hiển thị file thực thi đầu tiên mà nó tìm thấy. Bạn có thể thay đổi điều này bằng cách sử dụng tùy chọn -a mà Taimienphi.vn giới thiệu trước đó để tìm file và thư mục trên Linux .
Vì lệnh whereis chỉ sử dụng đường dẫn đã được mã hóa cứng vào lệnh, nên không phải lúc nào bạn cũng có thể nhìn thấy những gì mà bạn đang tìm kiếm. Nếu đang tìm kiếm một chương trình mà bạn cho rằng có thể chương trình đó được cài đặt trong thư mục không được liệt kê trong trang man của lệnh whereis, bạn có thể sử dụng lệnh which với tùy chọn -a để tìm kiếm tất cả các lần xuất hiện của lệnh trên toàn bộ hệ thống.
Như vậy bài viết trên Taimienphi.vn vừa hướng dẫn bạn 4 cách tìm file và thư mục trên Linux. Nếu có bất kỳ thắc mắc nào cần giải đáp, bạn có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết, Taimienphi.vn sẽ giải đáp các thắc mắc của bạn sớm nhất có thể.