Tìm kiếm file trong linux

Bài viết này nhằm giúp quý khách có một cái nhìn tổng quát về lệnh find - một lệnh tìm kiếm khá hay và thường được sử dụng trên Linux giúp quý khách cải thiện quá trình tìm kiếm file, thư mục với các tuỳ biến. Sau đây là 20 ví dụ đơn giản thường được sử dụng.

Phần 1. Tìm kiếm cơ bản

1. Tìm kiếm file theo tên file đầy đủ

# find . vinahost.txt

Kết quả:

./vinahost.txt

Lệnh trên sẽ tìm file có tên là vinahost.txt ( dấu . đại diện cho thư mục hiện hành).

2. Tìm kiếm file theo tên không đầy đủ.

 # find /  -name vinahost*

Kết quả: 

/home/vinahost1.php

/var/vinahostabc.rar

Lệnh trên sẽ tìm trên toàn bộ hệ thống file có tên bắt đầu bằng "vinahost"

3. Tìm kiếm file với phần mở rộng.

# find /home -name  *.php

Kết quả:

/home/vinahost.php

/home/admin/login.php

Lệnh trên sẽ tìm trong thư mục /home những file có tên bất kỳ, miễn nó có phần mở rộng là .php

4. Tìm kiếm file ẩn

# find / -type f -name ".*"

5. Tìm kiếm file có ownervinahost

find /home -user vinahostLệnh trên sẽ tìm kiếm tất cả những file trong thư mục home có owner là vinahost

6. Tìm kiếm file có groupvinahost

# find /home -group vinahost

Lệnh trên sẽ tìm kiếm tất cả những file trong thư mục home có group là vinahost

7. Tìm kiếm file được phân quyền 777

# find . -type f -perm 777

8. Tìm file chỉ có quyền read

# find / -perm /u=r

8. Tìm kiếm file rỗng

# find /tmp -type f -empty9. Tìm kiếm file được chỉnh sửa trong vòng 50 ngày

# find / -mtime 50

10. Tìm kiếm file được chỉnh sửa trong vòng 50 - 100 ngày

# find / -mtime +50 –mtime -10011. Tìm kiếm file vừa được tạo ra trong vòng 1 giờ

# find / -cmin -60

12. Tìm kiếm file có dung lượng 50M
# find / -size 50M

13. Tìm kiếm file có dung lượng lớn hơn 50M nhỏ hơn 100M

# find / -size +50M -size -100M


14. Tìm thư mục có tên vinahost

# find / -type d -name vinahost

15. Tìm kiếm trên nhiều thư mục

# find /opt /usr /var -name vinahost.txt -type f


Lệnh trên sẽ tìm kiếm trên các thư mục /opt /usr  /var  tập tin vinahost.txt

Phần 2. Tìm kiếm nâng cao, kết hợp với lệnh khác (rm, exec, cp, grep,..)

16. Tìm và xoá file có dung lượng trên 100M

# find / -size +100M -exec rm -rf {} \;17. Tìm và chmod 644 file có phần mở rộng là .html

# find /usr/local -name "*.html" -type f -exec chmod 644 {} \; 

18. Tìm file có phần mở rộng là .mp3 và copy file đó đến thư mục /tmp/MusicFiles

# find . -type f -name "*.mp3" -exec cp {} /tmp/MusicFiles \;

19. Tìm file có chứa nội dụng vinahost

# find /home -type f -exec grep -l 'vinahost' {} \;

20. Tìm file theo tên hoặc phần mở rộng hoặc kích thước (-o = OR)

# find / \( -name '*.txt' -o -name 'doc*' -o -size +5M \) Lệnh trên sẽ tìm những file có phần mở rộng là .txt hoặc những file có tên bắt đầu bằng doc hoặc những file có kích thước lớn hơn 5M.

Hi vọng 20 ví dụ trên có thể giúp ích được cho quý khách. Chúc quý khách thành công.

Hầu hết người dùng sử dụng trình giao diện trình quản lý file để tìm kiếm các file trên Linux, chẳng hạn như Nautilus trong Gnome, Dolphin trong KDE và Thunar trong Xfce. Tuy nhiên vẫn còn một số cách tìm kiếm file khác mà người dùng không hay biết đến. Bài viết này Taimienphi.vn sẽ hướng dẫn bạn cách tìm file và thư mục trên Linux.

Bài viết liên quan

  • Mã hóa file và thư mục trên Ubuntu
  • Cách di chuyển, sao chép và xóa các file trên Linux
  • Cách tùy chỉnh thư mục trên Linux với Folder Color
  • Thiết lập ẩn/hiện File, Folder trên hệ điều hành Linux
  • Hướng dẫn tạo file ISO trên Linux

Tìm kiếm file trong linux

Ngoài sử dụng giao diện trình quản lý file, người dùng có thể sử dụng một số cách khác để tìm kiếm các file và thư mục trên Linux. Dưới đây Taimienphi.vn sẽ hướng dẫn bạn cách tìm file và thư mục trên Linux bằng cách sử dụng tiện ích dòng lệnh sau khi truy cập nhanh Terminaltrên Linux.

Tìm kiếm file trong linux

Sử dụng lệnh Find

Lệnh find cho phép người dùng tìm kiếm các file và thư mục trên Linux mà họ biết gần chính xác tên file. Về cơ bản lệnh find tìm kiếm các file trong thư mục hiện tại và đệ quy thông qua các thư mục con phù hợp với các tiêu chí tìm kiếm được cung cấp. Người dùng có thể tìm kiếm các file theo tên, chủ tên file, nhóm, phân loại, quyền cho phép, ngày tháng, và các tiêu chí khác.

Nhập lệnh dưới đây vào cửa sổ Terminal để kiệt kê danh sách tất cả các file được tìm thấy trong thư mục hiện tại:

find .

Dấu chấm sau lệnh find cho biết tìm kiếm trong thư mục hiện tại.

Tìm kiếm file trong linux

Để tìm kiếm file phù hợp với một mẫu cụ thể, sử dụng đối số -name. Bạn có thể sử dụng các ký tự đạo diện tên file (chẳng hạn như * ), nhưng nên đặt ký tự thoát ( \ ) vào trước mỗi tên file hoặc đặt tên file trong dấu ngoặc kép.

Chẳng hạn nếu muốn tìm kiếm tất cả các file bắt đầu bằng "pro" trong thư mục Documents, bạn sử dụng lệnh cd Documents/ để thay đổi thư mục Documents và nhập lệnh dưới đây vào:

find . -name pro\*

Tất cả các file trong thư mục hiện tại bắt đầu bằng "pro" sẽ được liệt kê.

Lưu ý: Lệnh find mặc định sẽ phân biệt chữ hoa và chữ thường. Nếu muốn tìm kiếm 1 từ hoặc cụm từ để không phân biệt chữ hoa chữ thường, bạn sử dụng tùy chọn -iname với lệnh find.

Tìm kiếm file trong linux

Nếu không tìm thấy các file phù hợp với các tiêu chí của bạn, lệnh sẽ không xuất ra.

Lệnh find có rất nhiều tùy chọn để tinh chỉnh tìm kiếm. Để biết thêm thông tin về lệnh find, nhập lệnh man find vào cửa sổ Terminal rồi nhấn Enter.

Sử dụng lệnh Locate

Lệnh locate nhanh hơn lệnh find vì nó sử dụng cơ sở dữ liệu được xây dựng trước đó, trong khi lệnh find tìm kiếm trong hệ thống thực, thông qua tất cả các thư mục và file thực tế. Lệnh locate trả về danh sách tất cả các tên đường dẫn có chứa các nhóm ký tự được chỉ định.

Cơ sở dữ liệu được cập nhật định kỳ từ cron, nhưng bạn có thể cập nhật bất cứ lúc nào để cập nhật kết quả tìm kiếm. Để làm được điều này, bạn nhập lệnh dưới đây vào cửa sổ Terminal:

sudo updatedb

Nhập mật khẩu khi được thông báo.

Tìm kiếm file trong linux

Về cơ bản lệnh locate xác định tất cả các file trên hệ thống tập tin, bắt đầu từ root, có chứa tất cả hoặc bất kỳ phần nào trong tiêu chí tìm kiếm.

locate mydata

Ví dụ lệnh trên tìm thấy 2 file có chứa "mydata" và 1 file có chứa "data".

Tìm kiếm file trong linux

Nếu muốn tìm kiếm tất cả các file hoặc thư mục có chứa chính xác và chỉ chứa các tiêu chí tìm kiếm của bạn, sử dụng tùy chọn -b cùng lệnh locate:

locate -b '\mydata'

Dấu gạch chéo ngược trong lệnh trên là ký tự đại diện, cung cấp cách mở rộng các ký tự đại diện trong 1 file không cụ thể thành 1 tập hợp các file cụ thể. Một ký tự đại diện là một biểu tượng có thể được thay thế bằng một hoặc nhiều ký tự khi biểu thức được đánh giá.

Các ký tự đại diện phổ biến nhất là dấu hỏi chấm (?), viết tắt cho một ký dự đơn và dấu hoa thị (*), viết tắt chuỗi ký tự tiếp giáp. Trong ví dụ trên dấu gạch chéo ngược vô hiệu hóa thay thế ẩn "mydata" bằng "*mydata*" để hiển thị kết quả chỉ chứa "mydata".

Tìm kiếm file trong linux

Lệnh mlocate là lệnh mới được triển khai từ locate. Lệnh chỉ mục toàn bộ hệ thống tập tin, nhưng kết quả tìm kiếm chỉ bao gồm các file mà người dùng hiện tại có quyền truy cập. Khi bạn cập nhật cơ sở dữ liệu mlocate, nó sẽ giữ thông tin timestamp trong cơ sở dữ liệu. Điều này cho phép mlocate biết được nếu nội dung của 1 thư mục thay đổi mà không cần đọc lại nội dung, cập nhật cơ sở dữ liệu nhanh hơn và ít động đến ổ cứng hơn.

Khi cài đặt mlocte, file /usr/bin/locate binary sẽ thay đổi để trỏ đến mlocate. Để cài đặt mlocate, nếu chưa có trong bản phân phối Linux, bạn nhập lệnh dưới đây vào cửa sổ Terminal:

sudo apt-get install mlocate

Tìm kiếm file trong linux

Lệnh mlocate không sử dụng cùng một file cơ sở dữ liệu với lệnh chuẩn locate. Vì vậy nếu muốn tạo cơ sở dữ liệu bằng tay, bạn nhập lệnh dưới đây vào:

sudo /etc/cron.daily/mlocate

Lệnh mlocate sẽ không hoạt động cho đến khi cơ sở dữ liệu được tạo bằng tay bằng khi script được chạy từ cron.

Tìm kiếm file trong linux

Để biết thêm thông tin về lệnh locate hoặc mlocate, bạn nhập man locate hoặc man mlocate vào cửa sổ Terminal rồi nhấn Enter.

Sử dụng lệnh Which

Lệnh which trả về đường dẫn tuyệt đối của file thực thi được gọi. Điều này hữu ích trong việc tìm kiếm vị trí của một file thực thi để tạo shortcut cho chương trình trên máy tính, bảng điều khiển hoặc các vị trí khác trong trình quản lý desktop. Ví dụ nhập lệnh which firefox để hiển thị các kết quả như hình dưới đây:

Tìm kiếm file trong linux

Theo mặc định, lệnh which chỉ hiển thị file thực thi đầu tiên phù hợp. Để hiển thị tất cả các file thực thi phù hợp, bạn sử dụng thêm tùy chọn -a với lệnh:

which -a firefox

Ngoài ra bạn có thể tìm kiếm nhiều file thực thi bằng cách thêm các file cùng một lúc như hình dưới đây. Chỉ có các đường dẫn đến file thực thi được hiển thị. Trong ví dụ dưới đây chỉ có file thực thi "ps" được tìm thấy.

Tìm kiếm file trong linux

Lưu ý: Lệnh which chỉ tìm kiếm biến PATH của người dùng hiện tại. Nếu tìm kiếm file thực thi có sẵn cho người dùng root như người dùng thông thường, sẽ không có kết quả nào được hiển thị.

Để biết thêm thông tin về lệnh which, nhập man which vào cửa sổ Terminal rồi nhấn Enter.

Sử dụng lệnh Whereis

Lệnh whereis được sử dụng để tìm vị trí các file nhị phân, nguồn và trang file man cho một lệnh. Ví dụ nhập lệnh whereis firefox vào cửa sổ Terminal và kết quả hiển thị như hình dưới đây:

Tìm kiếm file trong linux

Nếu chỉ muốn hiển thị đường dẫn đến file thực thi, chứ không phải đường dẫn đến nguồn và trang man(ual), sử dụng tùy chọn -b. Ví dụ, lệnh whereis -b firefox sẽ chỉ hiển thị/usr/bin/firefox là kết quả tìm kiếm. Điều này rất hữu ích vì trong hầu hết các trường hợp bạn chỉ cần tìm kiếm file thực thi của các chương trình nhiều hơn là tìm kiếm các trang nguông và trang man của chương trình đó. Ngoài ra bạn có thể tìm kiếm các file mã nguồn mở (-s) hoặc chỉ tìm kiếm các trang man (-m).

Để biết thêm thông tin về lệnh whereis, nhập lệnh man whereis vào cửa sổ Terminal rồi nhấn Enter.

Sự khác nhau giữa lệnh Whereis và lệnh Which

Lệnh whereis cho bạn biết vị trí các trang nhị phân, nguồn và trang man của một lệnh, còn lệnh which chỉ hiển thị vị trí nhị phân của lệnh.

Lệnh whereis tìm kiếm thông quan danh sách các thư mục cụ thể cho các file nhị phân, nguồn và file man, còn lệnh which tìm kiếm các thư mục được liệt kê trong môi trường biến PATH. Với lệnh whereis, danh sách các thư mục cụ thể có thể được tìm thấy trong phần FILES trên trang man của lệnh.

Khi nói đến các kết quả được hiển thị theo mặc đinh, lệnh whereis sẽ hiển thị mọi thứ nó tìm được, còn lệnh which chỉ hiển thị file thực thi đầu tiên mà nó tìm thấy. Bạn có thể thay đổi điều này bằng cách sử dụng tùy chọn -a mà Taimienphi.vn giới thiệu trước đó để tìm file và thư mục trên Linux .

Vì lệnh whereis chỉ sử dụng đường dẫn đã được mã hóa cứng vào lệnh, nên không phải lúc nào bạn cũng có thể nhìn thấy những gì mà bạn đang tìm kiếm. Nếu đang tìm kiếm một chương trình mà bạn cho rằng có thể chương trình đó được cài đặt trong thư mục không được liệt kê trong trang man của lệnh whereis, bạn có thể sử dụng lệnh which với tùy chọn -a để tìm kiếm tất cả các lần xuất hiện của lệnh trên toàn bộ hệ thống.

https://thuthuat.taimienphi.vn/cach-tim-file-va-thu-muc-tren-linux-30759n.aspx
Như vậy bài viết trên Taimienphi.vn vừa hướng dẫn bạn 4 cách tìm file và thư mục trên Linux. Nếu có bất kỳ thắc mắc nào cần giải đáp, bạn có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết, Taimienphi.vn sẽ giải đáp các thắc mắc của bạn sớm nhất có thể.