Cách để Tìm tập tin trong Linux

Trong bài viết này:Dùng lệnh "find"Dùng lệnh "locate"Tìm tập tin có chứa đoạn văn bản nhất định

Nếu không biết cách, việc tìm tập tin trong Linux có thể sẽ khá khó khăn. Ở đây, cách làm tốt nhất chính là sử dụng một số lệnh terminal khác nhau. Chúng mạnh mẽ hơn nhiều so với tính năng tìm kiếm đơn giản trên những hệ điều hành khác và khi biết cách sử dụng thuần thục, bạn sẽ có được khả năng kiểm soát triệt để các tập tin của mình.

1
Dùng lệnh "find"

  1. 1
    Tìm tập tin bằng tên. Đây là phương pháp tìm kiếm cơ bản nhất mà bạn có thể thực hiện bằng lệnh find. Lệnh dưới đây sẽ tìm tệp trong thư mục hiện tại và mọi thư mục con của nó. [1]
    find -iname "tên tệp"
    
    • Dùng -iname thay vì -name để bỏ qua yếu tố viết hoa và viết thường trong truy vấn của bạn. Lệnh -name có xét đến yếu tố này.
  2. 2
    Thiết lập để tìm kiếm được bắt đầu từ thư mục root. Để tìm kiếm trên toàn bộ máy tính, bạn có thể thêm dấu bổ trợ / vào truy vấn. Nhờ đó, lệnh find sẽ nhận biết và tiến hành tìm kiếm mọi thư mục từ thư mục root.
    find / -iname "tên tệp"
    
    • Bạn có thể bắt đầu tìm kiếm ở một thư mục cụ thể bằng cách thay dấu / bằng đường dẫn, chẳng hạn như /home/pat.
    • Bạn có thể dùng . thay cho / để chỉ tiến hành tìm kiếm trên thư mục hiện tại và các thư mục con của nó.
  3. 3
    Sử dụng ký tự đại diện .* để tìm mọi tệp chứa các phần của truy vấn. Ký tự * này có thể sẽ hữu dụng trong việc tìm kiếm những mục mà bạn không biết tên đầy đủ hoặc khi bạn muốn tìm mọi tệp có phần đuôi nào đó.
    find /home/pat -iname "*.conf"
    
    • Lệnh trên sẽ trả về mọi tệp .conf trong thư mục người dùng (và các thư mục con) của Pat.
    • Bạn cũng có thể dùng nó để tìm mọi tập tin có chứa một phần tên tệp. Chẳng hạn như trong trường hợp có rất nhiều tài liệu liên quan đến wikiHow, bạn có thể tìm toàn bộ bằng cách gõ "*wiki*".
  4. 4
    Đơn giản hóa kết quả trả về. Có thể sẽ rất khó để sàng lọc khi có quá nhiều kết quả được trả về. Lúc này, bạn hãy dùng ký tự | và gửi kết quả tìm kiếm đến chương trình sàng lọc "less". Khi đó, bạn có thể duyệt qua và lọc kết quả dễ dàng hơn rất nhiều.
    find /home/pat -iname "*.conf" | less
    
  5. 5
    Tìm loại kết quả tìm kiếm cụ thể. Bạn có thể sử dụng các ký tự bổ trợ để nhận về loại kết quả tìm kiếm nhất định. Bạn có thể tìm tệp thông thường (f), thư mục (d), liên kết biểu tượng (l), thiết bị điều khiển (c), và thiết bị khối (b) với ký tự bổ trợ phù hợp.
    find / -type f -iname "tên-tệp"
    
  6. 6
    Lọc kết quả tìm kiếm bằng kích thước. Khi có nhiều tệp trùng tên và biết kích thước tệp mà bạn đang tìm kiếm, bạn có thể lọc kết quả tìm kiếm theo tiêu chí này.
    find / -size +50M -iname "tên tệp"
    
    • Lệnh trên sẽ trả về các tệp từ 50 MB trở lên. Bạn có thể dùng các ký tự + hoặc - để tìm tệp có kích thước lớn hay nhỏ hơn. Khi không dùng các ký tự này, lệnh tìm kiếm sẽ trả về tệp có kích thước đúng bằng kích thước yêu cầu
    • Bạn có thể lọc theo byte (c), kilobyte (k), megabyte (M), gigabyte (G), hoặc khối 512-byte (b). Lưu ý rằng phần này có phân biệt hoa thường.
  7. 7
    Dùng toán tử logic để kết hợp các kiểu tìm kiếm sàng lọc. Bạn có thể dùng các toán tử -and (và), -or (hoặc) và -not (không) để kết hợp các kiểu tìm kiếm với nhau. [2]
    find /hình_du_lịch -type f -size +200k -not -iname "*2015*"
    
    • Lệnh trên sẽ tìm các tệp nằm trong thư mục "hình_du_lịch" có kích thước lớn hơn 200 kilobyte và có tên không chứa "2015".
  8. 8
    Tìm tệp theo chủ sở hữu hoặc quyền truy cập. Nếu đang tìm tập tin của một ai đó hoặc tập tin với quyền truy cập nhất định, bạn có thể thu nhỏ phạm vi tìm kiếm.
    find / -user pat -iname "tên tệp"
    find / -group users -iname "tên tệp"
    find / -perm 777 -iname "tên tệp"
    
    • Các ví dụ trên lần lượt truy vấn với người dùng, nhóm và quyền truy cập nhất định. Bạn cũng có thể bỏ qua tên tệp để nhận về mọi tệp có loại được nêu. Chẳng hạn như find / -perm 777 sẽ trả về mọi tệp có quyền truy cập 777 (không giới hạn).[3]
  9. 9
    Kết hợp các lệnh để tiến hành xử lý sau khi tìm được tập tin. Bạn có thể kết hợp lệnh find với các lệnh khác để thực thi những lệnh này trên các tệp được trả về. Phân tách lệnh find và lệnh thứ hai bằng -exec và kết dòng lệnh bằng dấu {} \;
    find . -type f -perm 777 -exec chmod 755 {} \;
    
    • Tổ hợp lệnh trên sẽ tìm mọi tệp có quyền truy cập 777 trong thư mục hiện tại (và các thư mục con) rồi dùng lệnh chmod để đổi quyền truy cập đó sang 755.

2
Dùng lệnh "locate"

  1. 1
    Cài đặt tính năng .locate . Nhìn chung, lệnh locate chạy nhanh hơn lệnh find nhờ làm việc trên cơ sở dữ liệu cấu trúc tập tin của bạn. Không phải bản phân phối Linux nào cũng có sẵn tính năng này. Do đó, bạn cần những lệnh sau để thử cài đặt chúng:
    • sudo apt-get update và nhấn Enter.
    • Bạn có thể cài trên Debian và Ubuntu bằng cách: Gõ sudo apt-get install mlocate và nhấn Enter. Nếu locate đã được cài sẵn, thông điệp sau sẽ xuất hiện: mlocate is already the newest version.
    • Trong Linux Arch, dùng trình quản lý gói pacman: pacman -Syu mlocate
    • Với Gentoo, dùng emerge: emerge mlocate
  2. 2
    Cập nhật cơ sở dữ liệu .locate của bạn. Lệnh locate sẽ không thể tìm được gì cho đến khi cơ sở dữ liệu của nó được dựng và cập nhật. Dù tác vụ này được chạy tự động mỗi ngày nhưng bạn vẫn tự thực hiện được và bạn sẽ phải làm vậy để dùng được locate ngay.[4]
    • sudo updatedb và nhấn Enter.
  3. 3
    Dùng .locate để thực thi các truy vấn đơn giản. Dù nhanh nhưng lệnh locate không có nhiều tùy chọn như lệnh find. Việc thực thi lệnh tìm kiếm cơ bản ở lệnh này cũng rất giống với tìm kiếm cơ bản ở lệnh find.
    locate -i "*.jpg"
    
    • Lệnh trên tìm tệp có đuôi .jpg trên toàn bộ hệ thống. Ký tự đại diện * giữ vai trò tương tự như trong lệnh find.
    • Giống như lệnh find, -i không xét đến yếu tố viết hoa, viết thường trong truy vấn của bạn.
  4. 4
    Giới hạn kết quả tìm kiếm. Nếu tìm kiếm trả về quá nhiều kết quả, bạn có thể thu hẹp chúng bằng cách sử dụng tùy chọn -n, tiếp đến là số các kết quả bạn muốn hiển thị.
    locate -n 20 -i "*.jpg"
    
    • Chỉ 20 kết quả tìm kiếm đầu tiên phù hợp với truy vấn sẽ được hiển thị.
    • Bạn cũng có thể dùng dấu | gửi kết quả đến less để duyệt dễ dàng hơn.

3
Tìm tập tin có chứa đoạn văn bản nhất định

  1. 1
    Dùng lệnh .grep để tìm tập tin có chứa nội dung văn bản nhất định. Để tìm tệp có chứa cụm từ hay chuỗi ký tự nào đó, bạn có thể sử dụng lệnh grep. Lệnh grep cơ bản có định dạng như sau:
    grep -r -i "search query" /path/to/directory/
    
    • -r xác lập tìm kiếm "recursive" (đệ quy), nghĩa là mọi tệp có chứa từ khóa trong thư mục hiện hành và mọi thư mục con của nó sẽ được tìm kiếm.
    • -i cho biết truy vấn trên không phân biệt viết hoa và viết thường. Nếu muốn phân biệt hoa thường, bạn hãy bỏ qua toán tử -i.
  2. 2
    Bỏ bớt phần nội dung văn bản. Khi thực thi lệnh tìm kiếm grep có cấu trúc tương tự như trên, bạn sẽ nhận được kết quả trả về bao gồm tên tệp cùng phần văn bản được tô sáng trùng khớp với nội dung truy vấn. Bạn có thể ẩn đoạn văn bản trùng khớp này, chỉ hiển thị tên và đường dẫn của tệp bằng cách thêm nội dung sau vào lệnh:
    grep -r -i "search query" /path/to/directory/ | cut -d: -f1
    
  3. 3
    Ẩn thông báo lỗi. Lệnh grep sẽ trả lỗi về khi cố truy cập vào thư mục nào đó mà không có quyền truy cập phù hợp hoặc tiến hành tìm kiếm thư mục trống. Bạn có thể gửi thông báo lỗi đến /dev/null để ẩn tại đầu ra.[5]
    grep -r -i "search query" /path/to/directory/ 2>/dev/null
    

Thông tin Bài viết

Chuyên mục: Hệ Điều hành Khác

Ngôn ngữ khác:

English: Find a File in Linux, Español: encontrar un archivo en Linux, Italiano: Trovare un File in Linux, Русский: найти файл в Linux, Português: Encontrar um Arquivo no Linux, Deutsch: Eine Datei unter Linux finden, Français: trouver un fichier sous Linux, Nederlands: Een bestand zoeken in Linux, Bahasa Indonesia: Mencari Berkas di Linux, العربية: البحث عن ملف على نظام لينكس, ไทย: ค้นหาไฟล์ใน Linux, 中文: 在Linux电脑上查找文件

Trang này đã được đọc 90 lần.
Bài viết này đã giúp ích cho bạn?