3.2 FHS và tìm tệp tin
33
$ find /usr/bin -type f -size -50c -exec ls -l ’\{\}’ ’;’
-rwxr-xr-x 1 root
root
27 Oct 28 07:13 /usr/bin/krdb
-rwxr-xr-x 1 root
root
35 Nov 28 18:26 /usr/bin/run-nautilus
-rwxr-xr-x 1 root
root
25 Oct 21 17:51 /usr/bin/sgmlwhich
-rwxr-xr-x 1 root
root
26 Sep 26 08:00 /usr/bin/muttbug
Như bạn có thể thấy, find là một câu lệnh mạnh. Nó đã trưởng thành trong những năm
phát triển của UNIX và Linux. Có nhiều tùy chọn có ích khác. Có thể học trong trang man
của find.
3.2.19
locate
Chúng ta vừa xem xong which, whereis và find. Có thể bạn đã nhận ra rằng find
cần một chút thời gian khi thi hành, vì nó cần đọc từng thư mục đang tìm. Câu lệnh locate
có thể tăng tốc độ dựa trên cơ sở dữ liệu ngoài mà tạo ra bởi updatedb (chúng ta sẽ đề
cập ở mục tới).
Câu lệnh locate tìm bất kỳ phần nào của tên, không chỉ tên đầy đủ của tệp tin. Ví dụ:
$ locate bin/ls
/var/ftp/bin/ls
/bin/ls
/sbin/lsmod
/sbin/lspci
/usr/bin/lsattr
/usr/bin/lspgpot
/usr/sbin/lsof
3.2.20
Sử dụng updatedb
Hầu hết hệ thống Linux có một "công việc cron" để cập nhật cơ sở dữ liệu định kỳ. Nếu
locate
của bạn trả lại lỗi như sau, thì cần chạy updatedb với quyền root để tạo cơ sở
dữ liệu tìm kiếm:
$ locate bin/ls
locate: /var/spool/locate/locatedb: No such file or directory
$ su
Password:
# updatedb
Câu lệnh updatedb có thể chạy khá lâu.