Skip to content

Thích Công Nghệ

Thích Công Nghệ

  • Home » 
  • Máy Tính » 
  • Cách Tìm Kiếm File Hiệu Quả Trong Linux: Phân Tích Chuyên Sâu Lệnh locate, find và whereis

Cách Tìm Kiếm File Hiệu Quả Trong Linux: Phân Tích Chuyên Sâu Lệnh locate, find và whereis

By Administrator Tháng 8 2, 2025
Lệnh locate tìm kiếm file my_script.sh trong terminal Ubuntu
Table of Contents

Trong thế giới Linux rộng lớn, việc tìm kiếm file và thư mục là một kỹ năng thiết yếu đối với bất kỳ người dùng, quản trị viên hệ thống hay nhà phát triển nào. Linux cung cấp nhiều công cụ mạnh mẽ để thực hiện tác vụ này, bao gồm các lệnh phổ biến như locate, find và whereis. Tuy nhiên, việc nắm vững khi nào và trong tình huống nào nên sử dụng từng lệnh sẽ giúp bạn tiết kiệm đáng kể thời gian và tránh những phiền toái không đáng có. Bài viết này sẽ đi sâu phân tích từng lệnh, từ cơ chế hoạt động đến các tùy chọn nâng cao, giúp bạn tối ưu hóa quá trình tìm kiếm file trên hệ điều hành Linux của mình, biến bạn thành một chuyên gia thực thụ trong việc điều hướng hệ thống tệp tin.

Lệnh locate: Tìm Kiếm Siêu Tốc Từ Cơ Sở Dữ Liệu

Lệnh locate được thiết kế để tìm kiếm file và thư mục dựa trên tên của chúng (hoặc một phần tên) với tốc độ gần như tức thì. Khác với nhiều lệnh tìm kiếm khác, locate không thực sự quét hệ thống file của bạn theo thời gian thực. Thay vào đó, nó truy vấn một cơ sở dữ liệu được xây dựng sẵn, thường được gọi là mlocate.db, plocate.db, hoặc đơn giản là locate.db, tùy thuộc vào bản phân phối Linux bạn đang sử dụng.

Cơ sở dữ liệu này không được cập nhật ngay lập tức. Nếu bạn vừa tạo hoặc xóa một file, lệnh locate có thể sẽ chưa biết về sự thay đổi đó cho đến khi cơ sở dữ liệu được cập nhật lần tiếp theo. Việc cập nhật cơ sở dữ liệu thường được thực hiện định kỳ bởi một tiến trình hệ thống, điển hình là thông qua một cron job chạy hàng ngày. Bạn cũng có thể cập nhật cơ sở dữ liệu thủ công bằng lệnh sudo updatedb. Tuy nhiên, việc đánh chỉ mục lại toàn bộ hệ thống file có thể mất một khoảng thời gian đáng kể.

Cú pháp cơ bản của locate rất đơn giản và dễ sử dụng:

locate -i filename

Nếu file tồn tại và cơ sở dữ liệu đã được cập nhật, locate sẽ liệt kê tất cả các đường dẫn có chứa “my_script.sh”. Tùy chọn -i cho phép bạn tìm kiếm không phân biệt chữ hoa, chữ thường, giúp tăng tính linh hoạt.

Lệnh locate tìm kiếm file my_script.sh trong terminal UbuntuLệnh locate tìm kiếm file my_script.sh trong terminal Ubuntu

Ngoài ra, bạn có thể tìm kiếm tất cả các file với một phần mở rộng cụ thể, đếm số lượng kết quả phù hợp bằng tùy chọn -c, hoặc giới hạn số lượng đầu ra với tùy chọn -n. Lệnh locate cũng hỗ trợ khớp mẫu wildcard và cả biểu thức chính quy cơ bản, cung cấp khả năng kiểm soát cao hơn cho các truy vấn tìm kiếm của bạn.

locate so với mlocate và plocate: Những Cải Tiến Quan Trọng

Theo thời gian, tiện ích locate gốc đã được thay thế trong hầu hết các bản phân phối bởi mlocate. mlocate đã mang lại những cải tiến quan trọng, chẳng hạn như khả năng tôn trọng quyền truy cập của người dùng, đảm bảo bạn chỉ thấy những file mà mình được phép truy cập.

Khi mlocate được cài đặt, nó sẽ cung cấp lệnh locate cho hệ thống. Vì vậy, ngay cả khi bạn gõ locate, thực chất bạn đang chạy mlocate ở chế độ nền. Bạn có thể xác nhận phiên bản đang được sử dụng bằng lệnh:

locate --version

Lệnh này sẽ hiển thị phiên bản locate đang xử lý các tìm kiếm của bạn.

Gần đây hơn, một triển khai mới có tên plocate đã bắt đầu thay thế mlocate trong một số bản phân phối. plocate nhanh hơn và hiệu quả hơn, sử dụng một chỉ mục được nén để giảm thời gian tìm kiếm và dung lượng đĩa – điều này đặc biệt hữu ích trên các hệ thống có số lượng file lớn. Fedora, chẳng hạn, hiện đã sử dụng plocate theo mặc định, và nhiều bản phân phối khác đang bắt đầu làm theo.

Bạn cũng có thể cài đặt plocate bằng trình quản lý gói mặc định của mình, ví dụ trên Ubuntu, bạn chạy:

sudo apt install plocate

Cài đặt công cụ plocate trên Ubuntu qua trình quản lý gói APTCài đặt công cụ plocate trên Ubuntu qua trình quản lý gói APT

Một lần nữa, ngay cả khi plocate được cài đặt, lệnh bạn gõ vẫn là locate, vì vậy không có gì thay đổi trong cách bạn sử dụng nó. Đối với hầu hết người dùng, chức năng và cú pháp vẫn tương tự. Tuy nhiên, một vài tùy chọn nâng cao có thể khác biệt một chút giữa mlocate và plocate.

Lệnh find: Tìm Kiếm Linh Hoạt và Mạnh Mẽ Theo Thời Gian Thực

Khác với lệnh locate, lệnh find tìm kiếm file và thư mục theo thời gian thực bằng cách trực tiếp duyệt qua hệ thống thư mục bạn chỉ định. Lệnh này không phụ thuộc vào cơ sở dữ liệu, điều này có nghĩa là nó luôn trả về thông tin cập nhật nhất. Tuy nhiên, điều này cũng đồng nghĩa với việc nó có thể chậm hơn locate, đặc biệt khi tìm kiếm trên các hệ thống file lớn.

Màn hình nền Ubuntu - môi trường làm việc phổ biến cho lệnh find LinuxMàn hình nền Ubuntu – môi trường làm việc phổ biến cho lệnh find Linux

Điểm nổi bật của find là khả năng tìm kiếm dựa trên một loạt các tiêu chí đa dạng – không chỉ theo tên, mà còn theo loại, kích thước, quyền, quyền sở hữu, thời gian sửa đổi và nhiều yếu tố khác. Không chỉ dừng lại ở đó, find còn có thể thực thi các lệnh tùy ý (như rm, cp, hoặc chmod) trên các file mà nó tìm thấy bằng cách sử dụng tùy chọn -exec.

Dưới đây là cú pháp cơ bản của lệnh find:

find [path] [options] [expression]
  • path: Nơi bắt đầu tìm kiếm (sử dụng . cho thư mục hiện tại).
  • options & expression: Những gì cần tìm và cách lọc kết quả.

Ví dụ, để tìm một file tên config.xml trong thư mục chính của bạn và các thư mục con của nó, bạn chạy:

find /home/your_username -name "config.xml"

Tương tự như locate, find có thể thực hiện tìm kiếm không phân biệt chữ hoa, chữ thường bằng tùy chọn -iname (insensitive name):

find /var/log -iname "error*.log"

Lệnh này sẽ tìm các file như error.log, Error.Log, và ERROR-messages.log trong thư mục /var/log.

Bạn cũng có thể tìm kiếm các loại file cụ thể. Ví dụ, để tìm tất cả các thư mục (d) trong đường dẫn hiện tại, bạn sử dụng:

find . -type d

Hoặc bạn có thể tìm các file lớn hơn 100 MB (+100M) trong thư mục /opt của mình với:

find /opt -size +100M

Tìm các file có kích thước lớn hơn 100MB bằng lệnh find trong LinuxTìm các file có kích thước lớn hơn 100MB bằng lệnh find trong Linux

Ngoài ra, find còn cho phép bạn tìm kiếm các file rỗng, thư mục rỗng, hoặc các mục dựa trên thời gian sửa đổi cụ thể của chúng. Bạn cũng có thể chạy các lệnh khác trên mỗi file tìm thấy bằng find, ví dụ, xóa tất cả các file .tmp bằng lệnh sau:

find . -name "*.tmp" -exec rm {} ;

Lệnh whereis: Định Vị Các Thành Phần Của Lệnh Hệ Thống

Lệnh whereis khá khác biệt so với locate và find. Trong khi hai lệnh đầu tiên là công cụ tìm kiếm file đa năng, whereis có một nhiệm vụ rất cụ thể: định vị các file nhị phân (executable), mã nguồn (source files), và trang hướng dẫn (manual pages hay man pages) cho một lệnh cụ thể.

Lệnh này đặc biệt hữu ích khi bạn đang cố gắng hiểu cách một lệnh được cài đặt trên hệ thống của mình hoặc khi bạn đang khắc phục sự cố liên quan đến việc thực thi chương trình.

Không giống như locate và find, whereis chỉ tìm kiếm trong một tập hợp các thư mục được định nghĩa trước, nơi các loại file này thường được lưu trữ – những nơi như /bin, /usr/bin, và /usr/local/bin cho các file nhị phân; /usr/share/man cho các trang man; và nhiều thư mục mã nguồn khác.

Ví dụ, nếu bạn muốn tìm file nhị phân của lệnh ls, mã nguồn của nó (nếu có), và các trang man của nó, bạn có thể chạy:

whereis ls

Lệnh này sẽ cho bạn biết file nhị phân của ls nằm tại “/bin/ls” và trang man của nó nằm tại “/usr/share/man/man1/ls.1.gz”.

Nếu bạn chỉ quan tâm đến đường dẫn của file thực thi, hãy sử dụng tùy chọn -b (binary):

whereis -b ls

Để chỉ tìm các trang man, sử dụng tùy chọn -m (man):

whereis -m bash

Bạn cũng có thể hỏi whereis về nhiều lệnh cùng lúc:

whereis grep sed awk

Sử dụng lệnh whereis để xác định đường dẫn nhị phân của nhiều lệnh LinuxSử dụng lệnh whereis để xác định đường dẫn nhị phân của nhiều lệnh Linux

Thường thì các file mã nguồn không được cài đặt theo mặc định. Trong những trường hợp như vậy, đầu ra có thể chỉ bao gồm tên lệnh nếu không tìm thấy mã nguồn trong các vị trí tiêu chuẩn.

Khi Nào Nên Sử Dụng Từng Lệnh: Lựa Chọn Thông Minh Cho Từng Tình Huống

Việc lựa chọn đúng lệnh tìm kiếm sẽ nâng cao đáng kể hiệu quả làm việc của bạn trên Linux. Dưới đây là hướng dẫn chi tiết về thời điểm tối ưu để sử dụng mỗi lệnh:

  • Sử dụng lệnh locate khi bạn muốn có cái nhìn tổng quan, nhanh chóng và toàn hệ thống về vị trí của các file cụ thể theo tên. locate hoạt động hiệu quả nhất khi bạn khá chắc chắn rằng file không phải là file mới tạo, hoặc cơ sở dữ liệu của bạn đã được cập nhật gần đây. Nó lý tưởng cho các tìm kiếm nhanh chóng và không yêu cầu thông tin chi tiết ngoài tên file.

  • Sử dụng lệnh find khi bạn cần tìm kiếm dựa trên các tiêu chí phức tạp hơn ngoài tên file, chẳng hạn như kích thước file, loại file (thư mục, file thường, symbolic link), quyền truy cập, quyền sở hữu, hoặc thời gian sửa đổi. find đặc biệt hữu ích khi bạn muốn tìm kiếm sâu trong một cây thư mục cụ thể, hoặc khi file bạn đang tìm kiếm có thể là file mới và chưa được đưa vào cơ sở dữ liệu của locate. Hơn nữa, find thực sự tỏa sáng khi bạn cần kết quả theo thời gian thực hoặc muốn thực hiện các hành động tự động như xóa, sao chép hoặc thay đổi quyền trên các file mà nó tìm thấy.

  • Sử dụng lệnh whereis khi bạn cần định vị chính xác file nhị phân thực thi, mã nguồn hoặc các trang hướng dẫn (man pages) của một lệnh cụ thể. Lệnh này cực kỳ hữu ích khi bạn đang khắc phục sự cố liên quan đến biến môi trường PATH của hệ thống hoặc cố gắng hiểu một chương trình được cài đặt ở đâu và như thế nào trên hệ thống của bạn.

Đôi khi, nhu cầu của bạn có thể giao thoa giữa cả ba lệnh. Ví dụ, nếu locate trả về quá nhiều kết quả, bạn có thể sử dụng đầu ra của nó để thu hẹp đường dẫn bắt đầu cho một tìm kiếm find chính xác hơn. Các lệnh này không loại trừ lẫn nhau – chúng hoạt động tốt nhất khi được sử dụng cùng nhau như một phần trong bộ công cụ Linux của bạn.

Hãy chia sẻ kinh nghiệm và những mẹo tìm kiếm file yêu thích của bạn trong Linux ở phần bình luận bên dưới nhé!

Share
facebookShare on FacebooktwitterShare on TwitterpinterestShare on Pinterest
linkedinShare on LinkedinvkShare on VkredditShare on ReddittumblrShare on TumblrviadeoShare on ViadeobufferShare on BufferpocketShare on PocketwhatsappShare on WhatsappviberShare on ViberemailShare on EmailskypeShare on SkypediggShare on DiggmyspaceShare on MyspacebloggerShare on Blogger YahooMailShare on Yahoo mailtelegramShare on TelegramMessengerShare on Facebook Messenger gmailShare on GmailamazonShare on AmazonSMSShare on SMS
Post navigation
Previous post

Apple Music trên Mac: Khi Trải Nghiệm Cao Cấp Trở Thành Nỗi Thất Vọng Triền Miên

Next post

Game Chuyển Thể Từ Phim: Từ “Thảm Họa” Đến “Bom Tấn” Của Ngành Công Nghiệp Game?

Administrator

Related Posts

Categories Máy Tính Cách Tìm Kiếm File Hiệu Quả Trong Linux: Phân Tích Chuyên Sâu Lệnh locate, find và whereis

Minigalaxy 1.3.2: Trải Nghiệm GOG Gaming Trên Linux Đột Phá Với Cải Tiến Wine

Categories Máy Tính Cách Tìm Kiếm File Hiệu Quả Trong Linux: Phân Tích Chuyên Sâu Lệnh locate, find và whereis

Bí Danh Email (Email Alias): Lá Chắn Quyền Riêng Tư Toàn Diện Cho Người Dùng Việt

Categories Máy Tính Cách Tìm Kiếm File Hiệu Quả Trong Linux: Phân Tích Chuyên Sâu Lệnh locate, find và whereis

Đánh Giá Chi Tiết Unifi Dream Router 7: ‘Trái Tim’ Mạng Wi-Fi 7 All-in-One Đáng Giá cho Gia Đình Việt

Recent Posts

  • Điểm Tin Công Nghệ Nổi Bật Tuần Qua: Từ Windows Đến AI và Gaming
  • ROG Bulwark Dock: Giải Pháp Toàn Diện Mở Rộng Trải Nghiệm Gaming Cầm Tay Từ ASUS
  • 10 Tựa Game Nintendo DS Kinh Điển Nên Có Mặt Trên Switch 2
  • Minigalaxy 1.3.2: Trải Nghiệm GOG Gaming Trên Linux Đột Phá Với Cải Tiến Wine
  • Bí Danh Email (Email Alias): Lá Chắn Quyền Riêng Tư Toàn Diện Cho Người Dùng Việt

Recent Comments

Không có bình luận nào để hiển thị.
Copyright © 2025 Thích Công Nghệ - Powered by Nevothemes.
Offcanvas
Offcanvas

  • Lost your password ?