Lệnh find:
Đầu tiên là tìm kiếm theo tên file: sử dụng tùy chọn -name, tùy chọn này chấp nhận các kí tự thay thế (meta-characters) và các biểu thức chính quy ( regex – regular expressions )
find . -name ‘*.nt’
find . -name ‘[Ss]*.nt’
Lệnh đầu tiên có cùng mục đích là tìm các file có đuôi ‘.nt’ trong folder hiện tại, lệnh thứ 2 tìm các file có tên bắt đầu là ‘s’ hoặc ‘S’ và kết thúc bằng ‘.nt’. Có thể bỏ “.” (current directory) bởi mặc định find sẽ tìm kiếm trong folder này.
Nên để pattern trong ” ‘ ‘ ” (single quote) để việc tìm kiếm chính xác hơn.
Tìm kiếm theo tên file có thêm một tùy chọn khác là -iname, tùy chọn này không phân biệt chữ hoa chữ thường (case insensitive). Khi đó thì kiếm pattern ‘foo’ thì sẽ các kết quả “Foo, FOO, fOo,…” cũng sẽ được chấp nhận.
Thứ hai là tìm kiếm theo kiểu file (looking for files by type): sử dụng đối số -type và theo sau là 1 trong các từ sau:
d Directory
f File
l Symbolic Link
find -type l
Và tất nhiên là có thể kết hợp với -name option.
find /bin -type l -name ‘*grep*’
Tiếp theo là tìm kiếm theo dung lượng chiếm giữ ( looking for file by sizes ): đối số -size.
Khuyên dùng những dạng dễ đọc như “Killobytes” “Megabytes” “Gigabytes” tương đương với “k” “M” “G”
Ví dụ tìm kiếm các file trong $HOME có dung lượng từ 10MB đến 20M
find $HOME -size +10M -size -20M
Tìm kiếm file theo thời gian: Có 3 tùy chọn chính là -mtime -atime và -ctime
-mtime thì kiếm theo thời gian sửa đổi, tùy chọn này không phân biệt thời gian sửa đổi và thời gian tạo.
-atime thì kiếm theo thời gian truy cập, theo man thì -atime sẽ không làm tốt nếu sử dụng kiếm folder, lúc đó sẽ dùng -ctime để thay thế. Nhưng mình vẫn chưa thấy sự khác nhau của -atime và -ctime. Tạm thời phần time này ghi chú nhiêu đấy thôi, để sau này có phát hiện mới sẽ bổ sung vào.
Tìm kiếm file theo quyền: -perm
Ở đây mình chỉ cần nhớ về quyền tính theo số.
Cú pháp: find -perm xxxx
Với xxxx là quyền chính xác của file, nếu thêm dấu “-” (minus) đằng trước thì sẽ tìm tất cả các file có quyền thấp nhất là xxxx, nếu sử dụng “+” (plus) thì tìm các file với quyền cao nhất là xxxx.
Tìm kiếm theo chủ sở hữu ( owner ) và nhóm ( group ): -user -group
Có thể tìm kiếm theo tên, hoặc theo số ID.
Có thêm 2 tùy chọn nữa là -nouser và -nogroup để kiếm những file mà không có chủ quyền (có thể là do user đã bị xóa khỏi hệ thống).
Sự khác nhau giữa -exec và xargs là -exec thực thi lệnh mỗi khi tìm thấy còn xargs sẽ thực thi vài file trong mỗi lần xử lý. Tuy nhiên có thể xargs gặp vấn đề với filename có chứa khoảng trắng (space).
So sánh tìm kiếm file mới hơn 1 file nào đó được chỉ định: -newer
Các biểu thức:
() để nhóm các biểu thức.
! và -not có cùng công dụng, phủ định kết quả. -not không tuân theo chuẩn POSIX
-a -and , 2 biểu thức liên tiếp cách nhau bởi khoảng trắng, kết quả tìm kiếm phải đúng với cả 2 biểu thức
-o -or, kết quả tìm kiếm đúng 1 trong 2 biểu thức.
Lệnh locate:
Lệnh này dùng để tìm kiếm theo tên, nhanh hơn rất nhiều so với find do đã được index sẵn lúc khởi động, vì vậy các thay đổi gần đây chưa được index thì có thể sẽ hiển thị kết quả sai. Để kiếm chính xác hơn tính đến thời điểm hiện tại thì sử dụng lệnh updatedb.
Ví dụ để tìm các source file của c: locate *.c
Để biết thêm chi tiết vui lòng đọc manpage.