Hai lệnh để dễ dàng tìm tập tin và thư mục trong Debian 11

Tác giả NetworkEngineer, T.Tư 26, 2022, 10:18:15 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Hai lệnh để dễ dàng tìm tập tin và thư mục trong Debian 11


Về cơ bản, mọi thứ trong Linux đều là một tập tin. Nhưng trước khi có thể chỉnh sửa tập tin, bạn phải có khả năng định vị tập tin đó trong hệ thống của mình.

1. Giới thiệu về tìm kiếm tập tin Linux

Trong bài viết này, mình mô tả ngắn gọn chi tiết hai lệnh với các ví dụ hữu ích để tìm kiếm tập tin bằng cửa sổ dòng lệnh Terminal. Hai lệnh là lệnh find và lệnh locate. Sự khác biệt giữa hai lệnh là find thực hiện tìm kiếm trong thời gian thực và định vị sử dụng cơ sở dữ liệu được lập chỉ mục cho tìm kiếm. Điều này có nghĩa là lệnh định vị thường nhanh hơn, nhưng nó giả định rằng tập tin đang được tìm kiếm nằm trong cơ sở dữ liệu chỉ mục của nó và cơ sở dữ liệu đó thường được tạo vào ban đêm, vì vậy lệnh định vị không tìm thấy tập tin mới hơn.

Mình đang sử dụng Debian 11 trong môi trường của mình. Nhưng các lệnh phải giống nhau trên các bản phân phối Linux khác.

Nếu bạn muốn tìm kiếm các tập tin theo nội dung của chúng thay vì tên tập tin, hãy xem lệnh grep để thay thế.

2. Tìm kiếm tập tin và thư mục bằng lệnh find

2.1. Tìm kiếm tập tin trong thư mục hiện tại

Nếu bạn muốn tìm tập tin bằng lệnh find, hãy thực hiện một trong các thao tác sau trên cửa sổ dòng lệnh Terminal của bạn.

Mã nguồn [Chọn]
$ find <filname>
Ví dụ:

Mã nguồn [Chọn]
$ find test.txt
Thao tác này sẽ tìm kiếm tập tin trong thư mục hiện tại mà bạn đang làm việc.

2.2. Tìm kiếm tập tin trong thư mục khác

Bây giờ, nếu bạn muốn định vị tập tin trong một thư mục cụ thể. Lệnh hoàn chỉnh sẽ trông giống như.

Mã nguồn [Chọn]
$ find <path of directory/filename>
Giả sử bạn muốn tìm kiếm một tập tin có tên 'test.txt' trong Documents, lệnh hoàn chỉnh sẽ như sau.

Mã nguồn [Chọn]
$ find Documents/test.txt
2.3. Tìm tập tin theo phần mở rộng tập tin

Bây giờ nếu bạn muốn tìm tất cả các tập tin văn bản trong thư mục hiện tại hoặc thư mục cụ thể của mình, các lệnh tương ứng sẽ như sau.

Mã nguồn [Chọn]
$ find *.txt
Mã nguồn [Chọn]
$ find <path of directory/*.txt>
Giả sử bạn muốn tìm kiếm tất cả các tập tin văn bản tại đường dẫn Documents/Karim, lệnh hoàn chỉnh sẽ như thế nào.

Mã nguồn [Chọn]
$ find Documents/Karim/*.txt
2.4. Tìm tập tin theo tên

Ngoài ra, bạn có thể sử dụng tùy chọn -name khi bạn muốn tìm kiếm một tập tin theo tên.

Mã nguồn [Chọn]
$ find <path> -name <name of file you want to search>
Giả sử, bạn muốn tìm kiếm một tập tin có tên test1.txt tại Documents/Karim. Lệnh hoàn chỉnh sẽ trông như thế nào.

Mã nguồn [Chọn]
$ find Documents/Karim -name test1.txt
Nếu bạn muốn tìm kiếm một tập tin cụ thể trong thư mục hiện tại mà bạn đang làm việc. Đặt . tại đường dẫn như trong ví dụ.

Mã nguồn [Chọn]
$ find . -name test1.txt
2.5. Bỏ qua chữ hoa khi tìm kiếm tập tin

Nếu bạn muốn tìm kiếm một tập tin và muốn bỏ qua trường hợp này, hãy sử dụng khóa chuyển đổi -iname. Lệnh hoàn chỉnh sẽ trông như sau.

Mã nguồn [Chọn]
$ find . -iname test.txt
2.6. Tìm tập tin theo loại tập tin, ví dụ: liên kết tượng trưng

Để tìm kiếm một loại tập tin cụ thể, hãy sử dụng tùy chọn -type. Lệnh hoàn chỉnh sẽ giống như sau.

Mã nguồn [Chọn]
$ find <path> -type <c>
  • c biểu thị loại tập tin và chúng đang theo dõi.
  • b khối (được đệm) đặc biệt
  • c ký tự (không có bộ đệm) đặc biệt
  • d thư mục
  • p tên đường ống
  • f tập tin thông thường
  • l liên kết tượng trưng
  • D Cửa (Solaris)

Giả sử bạn muốn tìm kiếm các tập tin thông thường tại Documents/Karim, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
$ find Documents/Karim -type f
Nếu bạn muốn tìm kiếm các tập tin thông thường trong thư mục hiện tại của mình. Lệnh hoàn chỉnh sẽ giống như sau.

Mã nguồn [Chọn]
$ find . -type f
Nếu bạn muốn tìm kiếm các tập tin có nhiều phần mở rộng, hãy sử dụng các ký tự c được phân tách bằng dấu phẩy.

Giả sử bạn muốn tìm tất cả các tập tin trống thông thường trong thư mục hiện tại của mình.

Mã nguồn [Chọn]
$ find . -type f -empty
Giả sử bạn muốn tìm tất cả các thư mục trống trong thư mục hiện tại của mình, hãy sử dụng các tùy chọn -d và -empty trong một lệnh find như sau.

Mã nguồn [Chọn]
$ find . -type d -empty
2.7. Tìm tập tin theo kích thước

Nếu bạn muốn tìm tập tin có kích thước cụ thể, bạn có thể sử dụng tham số -size. Bạn có thể sử dụng hậu tố sau với kích thước chính xác của chúng.

  • c: byte
  • k: Kilobyte
  • M: Megabyte
  • G: Gigabyte
  • b: Khối 512 byte

Giả sử bạn muốn tìm tất cả các tập tin trong thư mục hiện tại của mình có kích thước chính xác là 50 byte. Bạn phải thực hiện lệnh sau.

Mã nguồn [Chọn]
$ find . -size 50c
Giả sử bạn muốn tìm tất cả các tập tin trong thư mục hiện tại của mình có kích thước lớn hơn 50 byte hoặc nhỏ hơn 50 byte tương ứng, bạn phải thực hiện một trong các lệnh sau.

Mã nguồn [Chọn]
$ find . -size +50c
Mã nguồn [Chọn]
$ find . -size -50c
2.8. Tìm tập tin của chủ sở hữu (người dùng)

Nếu bạn muốn tìm kiếm tập tin thuộc sở hữu của một người dùng cụ thể, bạn có thể sử dụng tùy chọn -user. Cú pháp của lệnh sẽ như sau.

Mã nguồn [Chọn]
$ find <path> -user <username>
Giả sử bạn muốn tìm kiếm một tập tin trong thư mục hiện tại do vitux sở hữu. Lệnh sẽ trông như sau.

Mã nguồn [Chọn]
$ find . -user vietnetwork
3. Tìm tập tin bằng lệnh locate

Thứ hai là lệnh locate bạn có thể sử dụng để tìm kiếm các tập tin và thư mục trong hệ thống của mình.

Trước hết, bạn phải cài đặt tiện ích locate trong máy Debian 11 của mình. Đăng nhập bằng root và thực hiện lệnh sau trên cửa sổ dòng lệnh Terminal của bạn. Nhấn Y từ bàn phím của bạn khi bạn được yêu cầu xác nhận.

Mã nguồn [Chọn]
$ apt-get install locate
Chờ một thao tác hoàn tất.

Locate là một lệnh nhanh hơn và nó dựa vào cơ sở dữ liệu của hệ thống tập tin. Nó được cập nhật mỗi ngày một lần nhưng nếu bạn muốn cập nhật nó theo cách thủ công, hãy chạy lệnh sau trên cửa sổ dòng lệnh Terminal của bạn với đặc quyền root.

Mã nguồn [Chọn]
$ updatedb
Để tìm kiếm tập tin bằng lệnh định vị trong thư mục hiện tại của bạn, hãy thực hiện các thao tác sau trên cửa sổ dòng lệnh Terminal của bạn.

Mã nguồn [Chọn]
$ locate <filename>
Giả sử tên tập tin của mình là test.txt. Lệnh hoàn chỉnh sẽ giống như sau.

Mã nguồn [Chọn]
$ locate test.txt
Bạn có thể sử dụng tùy chọn -i để bỏ qua trường hợp tên tập tin.

Mã nguồn [Chọn]
$ locate -i <filename>
Hoặc

Mã nguồn [Chọn]
$ locate -i test.txt
Cả hai lệnh locate và find đều hữu ích trong việc tìm kiếm tập tin. Bạn sử dụng lệnh nào là tùy thuộc vào bạn. Chúng có thể được mở rộng bằng các lệnh khác bằng cách sử dụng pipe, wc, sort và grep, v.v