Android

Cách tìm tệp trong linux bằng dòng lệnh

Linux Commands for Beginners 16 - Output Redirection

Linux Commands for Beginners 16 - Output Redirection

Mục lục:

Anonim

Lệnh find là một trong những công cụ mạnh nhất trong kho vũ khí của quản trị viên hệ thống Linux. Nó tìm kiếm các tệp và thư mục trong hệ thống phân cấp thư mục dựa trên biểu thức do người dùng cung cấp và có thể thực hiện hành động do người dùng chỉ định trên mỗi tệp phù hợp.

Bạn có thể sử dụng lệnh find để tìm kiếm các tệp và thư mục dựa trên quyền, loại, ngày, quyền sở hữu, kích thước và hơn thế nữa. Nó cũng có thể được sử dụng kết hợp với các công cụ khác như grep hoặc sed .

Linux find lệnh Cú pháp

Cú pháp chung cho lệnh find như sau:

find

  • Thuộc tính options kiểm soát việc xử lý các liên kết tượng trưng, ​​tùy chọn gỡ lỗi và phương thức tối ưu hóa. Thuộc tính path… xác định thư mục bắt đầu hoặc thư mục nơi find sẽ tìm kiếm tệp. Thuộc tính expression được tạo thành từ các tùy chọn, mẫu tìm kiếm và hành động được phân tách bởi các nhà khai thác.

Để tìm kiếm các tập tin trong một thư mục, người dùng gọi lệnh find cần phải có quyền đọc trên thư mục đó.

Hãy xem ví dụ sau:

find -L /var/www -name "*.js"

  • Tùy chọn -L (tùy chọn) cho biết lệnh find để theo các liên kết tượng trưng. /var/www (đường dẫn) chỉ định thư mục sẽ được tìm kiếm. (Biểu thức) -name "*.js cho biết find kiếm các tệp kết thúc bằng .js (tệp JavaScript).

Tìm tập tin theo tên

Tìm tập tin theo tên có lẽ là cách sử dụng phổ biến nhất của lệnh find . Để tìm một tệp theo tên của nó, tùy chọn -name theo tên của tệp bạn đang tìm kiếm.

Ví dụ: để tìm kiếm một tệp có tên document.pdf trong thư mục /home/linuxize bạn sẽ sử dụng lệnh sau:

find /home/linuxize -type f -name document.pdf

Để chạy tìm kiếm không phân biệt chữ hoa chữ thường, hãy thay đổi tùy chọn -name bằng -iname :

find /home/linuxize -type f -iname document.pdf

Lệnh ở trên sẽ khớp với Tài liệu.p.p trực tiếp, DOC DOCENTENT.pdf trực tiếp..v.v.

Tìm tệp theo tiện ích mở rộng

Tìm kiếm tệp theo tiện ích mở rộng cũng giống như tìm kiếm tệp theo tên. Ví dụ: để tìm tất cả các tệp kết thúc bằng .log.gz trong thư mục /var/log/nginx bạn có thể sử dụng:

find /var/log/nginx -type f -name '*.log.gz'

Điều quan trọng cần đề cập là khi bạn sử dụng ký tự đại diện, bạn phải trích dẫn mẫu hoặc thoát biểu tượng dấu hoa thị * bằng dấu gạch chéo ngược \ để nó không bị dịch bởi vỏ.

Để tìm tất cả các tệp không khớp với regex *.log.gz bạn có thể sử dụng tùy chọn *.log.gz . Ví dụ: để tìm tất cả các tệp không kết thúc bằng *.log.gz bạn sẽ sử dụng:

find /var/log/nginx -type f -not -name '*.log.gz'

Tìm tệp theo loại

Đôi khi bạn có thể cần tìm kiếm các loại tệp cụ thể như tệp bình thường, thư mục hoặc liên kết tượng trưng. Trong Linux, mọi thứ đều là một tệp.

Để tìm kiếm các tệp dựa trên loại của chúng, hãy sử dụng tùy chọn -type và một trong các mô tả sau để chỉ định loại tệp:

  • f : một tệp thông thường d : thư mục l : liên kết tượng trưng c : thiết bị ký tự b : thiết bị khối p : tên ống (FIFO) s : socket

Ví dụ, để tìm tất cả các thư mục trong thư mục làm việc hiện tại, bạn sẽ sử dụng:

find. -type d

Ví dụ phổ biến là thay đổi đệ quy quyền truy cập tệp trang web thành 644 và quyền thư mục thành 755 bằng chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Tìm tập tin theo kích thước

Để tìm tệp dựa trên kích thước tệp, hãy chuyển tham số -size cùng với tiêu chí kích thước. Bạn có thể sử dụng các hậu tố sau để chỉ định kích thước tệp:

  • b : Khối 512 byte (mặc định) c : byte w : từ hai byte k : Kilobytes M : Megabyte G : Gigabyte

Lệnh sau sẽ tìm tất cả các tệp có độ chính xác 1024 byte trong /tmp :

find /tmp -type f -size 1024c

Lệnh find cũng cho phép bạn tìm kiếm các tệp lớn hơn hoặc nhỏ hơn kích thước đã chỉ định.

Trong ví dụ sau, chúng tôi đang tìm kiếm tất cả các tệp nhỏ hơn 1MB trong thư mục làm việc hiện tại. Lưu ý dấu trừ - ký hiệu trước giá trị kích thước:

find. -type f -size -1M

find. -type f -size +1M

Bạn thậm chí có thể tìm kiếm các tập tin trong một phạm vi kích thước. Lệnh sau sẽ tìm tất cả các tệp trong khoảng từ 1 đến 2MB :

find. -type f -size +1M -size 21M

Tìm tệp theo ngày sửa đổi

Lệnh find cũng có thể tìm kiếm các tệp dựa trên lần sửa đổi, truy cập hoặc thay đổi thời gian cuối cùng của chúng.

Tương tự như khi tìm kiếm theo kích thước, hãy sử dụng các biểu tượng dấu cộng và dấu trừ cho nhóm lớn hơn so với phạm vi hoặc ít hơn so với.

Giả sử vài ngày trước, bạn đã sửa đổi một trong các tệp cấu hình dovecot, nhưng bạn đã quên cái nào. Bạn có thể dễ dàng lọc tất cả các tệp trong thư mục /etc/dovecot/conf.d kết thúc bằng .conf và đã được sửa đổi trong năm ngày qua với:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Dưới đây là một ví dụ khác về việc lọc các tệp dựa trên ngày sửa đổi bằng cách sử dụng tùy chọn -daystart . Lệnh bên dưới sẽ liệt kê tất cả các tệp trong thư mục /home đã được sửa đổi 30 trở lên:

find /home -mtime +30 -daystart

Tìm tập tin theo quyền

Tùy chọn -perm cho phép bạn tìm kiếm tệp dựa trên quyền của tệp.

Ví dụ: để tìm tất cả các tệp có quyền chính xác 775 trong thư mục /var/www/html , bạn sẽ sử dụng:

find /var/www/html -perm 644

Bạn có thể thêm tiền tố vào chế độ số bằng dấu trừ - hoặc dấu gạch chéo / .

Khi dấu gạch chéo / được sử dụng làm tiền tố, thì ít nhất một danh mục (người dùng, nhóm hoặc người khác) phải có ít nhất các bit tương ứng được đặt cho một tệp phù hợp.

Hãy xem xét lệnh ví dụ sau:

find. -perm /444

Lệnh trên sẽ khớp tất cả các tệp có quyền đọc được đặt cho người dùng, nhóm hoặc người khác.

Nếu dấu trừ - được sử dụng làm tiền tố thì tệp phải khớp với ít nhất các bit đã chỉ định phải được đặt. Lệnh sau sẽ tìm kiếm các tệp có quyền đọc và ghi cho chủ sở hữu và nhóm và người dùng khác có thể đọc được:

find. -perm -664

Tìm tập tin theo chủ sở hữu

Để tìm các tệp thuộc sở hữu của một người dùng hoặc nhóm cụ thể, hãy sử dụng tùy chọn -user -group .

Ví dụ: để tìm kiếm tất cả các tệp và thư mục thuộc sở hữu của người dùng linuxize , bạn sẽ chạy:

find / -user linuxize

Đây là một ví dụ thực tế. Giả sử bạn muốn tìm tất cả các tệp thuộc sở hữu của www-data người dùng và thay đổi quyền sở hữu của các tệp phù hợp từ www-data thành nginx :

find / -user www-data -type f -exec chown nginx {} ;

Tìm và xóa tập tin

Để xóa tất cả các tệp phù hợp, hãy thêm tùy chọn -delete vào cuối biểu thức khớp.

Đảm bảo bạn chỉ sử dụng tùy chọn này khi bạn tự tin rằng kết quả khớp với các tệp bạn muốn xóa. Luôn luôn là một ý tưởng tốt để in các tệp phù hợp trước khi sử dụng tùy chọn -delete .

Ví dụ: để xóa tất cả các tệp kết thúc bằng .temp khỏi /var/log/ bạn sẽ sử dụng:

find /var/log/ -name `*.temp` -delete Sử dụng tùy chọn -delete hết sức thận trọng. Dòng lệnh find được đánh giá là một biểu thức và nếu bạn thêm tùy chọn -delete trước, lệnh sẽ xóa mọi thứ bên dưới các điểm bắt đầu mà bạn đã chỉ định.

Khi nói đến thư mục, find có thể xóa các thư mục trống giống như rmdir .

Phần kết luận

Chúng tôi đã chỉ cho bạn cách sử dụng lệnh find với các tùy chọn và tiêu chí khác nhau.

Bài viết này sẽ cung cấp cho bạn một sự hiểu biết cơ bản về cách định vị các tệp trên các hệ thống Linux của bạn. Bạn cũng có thể truy cập trang find và đọc về tất cả các tùy chọn mạnh mẽ khác của lệnh find .

tìm thiết bị đầu cuối