By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
FantasistaFantasista
  • Home
  • Network
  • System
  • Software
  • Security
    SecurityShow More
    Hướng dẫn chung về Kali Linux
    27/05/2022
    Ransomware tấn công có chủ đích vào các tổ chức
    03/11/2021
    Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
    04/10/2021
    Series Pentesterlab – Day 21: From SQL Injection to Shell
    15/09/2021
    Series Tryhackme – Day 01: Starting Out In Cyber Sec
    13/09/2021
  • Coding
  • Life
Search
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Reading: Lệnh find trong Linux
Share
Sign In
Notification Show More
Latest News
Hướng dẫn chung về Kali Linux
27/05/2022
Ransomware tấn công có chủ đích vào các tổ chức
03/11/2021
Hướng dẫn kích hoạt IDM Full không cần crack, sử dụng key an toàn
10/10/2021
Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
04/10/2021
Series Pentesterlab – Day 21: From SQL Injection to Shell
15/09/2021
Aa
FantasistaFantasista
Aa
Search
Have an existing account? Sign In
Follow US
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Fantasista > Blog > Fantasista > Hệ thống > Linux > Lệnh find trong Linux
Linux

Lệnh find trong Linux

Fantasista
Fantasista 11/08/2021
Updated 2021/08/11 at 10:16 Sáng
Share
11 Min Read
SHARE
Mục lục
Tìm theo tênSử dụng tên file để tìmSử dụng tên nhưng sẽ không phân biệt hoa thườngTìm theo thư mụcThực thi lệnh với các file tìm đượcTìm file trống ( 0 byte)Tìm file theo dung lượngTìm file theo thời gianLưu kết quả tìm được ra file để tổng hợpTham khảo

Nếu bạn đang sử dụng Linux và muốn tìm kiếm một thứ gì đó trong ổ cứng mà không nhớ nó ở đâu, tên cụ thể nó là gì hay đơn giản là có quá nhiều file khá giống nhau mà bạn chỉ cần những file match với điều kiện của bạn … nhưng bạn chưa biết làm thế nào thì có thể bài này sẽ rất hữu ích cho bạn. Linux có giao diện GUI thân thiện nhưng sự mạnh mẽ của nó lại nằm ở các command, trong đó có find .Hãy cùng tìm hiểu xem chúng ta có thể làm những gì với command này nhé.  Ctrl + Alt + T  để mở terminal nào.

Tìm theo tên

Sử dụng tên file để tìm

Đây có lẽ là cách sử dụng cơ bản nhất và tìm chính xác theo tên bạn đưa vào. Giả sử bạn có một loạt các với tên Test.sh trong cả thư mục hiện hành và các thư mục con, cháu của nó. bạn sử dụng -name rồi đến tên file trong cặp “” như ví dụ dưới :

1
2
3
4
#find -name "Test.sh"
/home/Test.sh
/home/yourname/Test.sh
 

Sử dụng tên nhưng sẽ không phân biệt hoa thường

Giống với trên nhưng khác ở chỗ bạn chỉ cần thêm i (tức là ignore) vào là bạn có thể tìm theo tên mà không phân biệt hoa thường.

1
2
3
4
5
6
7
# find -iname "Test.sh"
/home/Test.sh
/home/yourname/Test.sh
/home/yourname/test.sh
/home/yourname/test
/home/yourname/test/TEST.sh
 

Tip 1 : Như bạn thấy thì find sẽ tìm theo cả tên thư mục nên để hạn chế, bạn hãy chỉ định loại cần tìm là chỉ file mà thôi bằng cách thêm vào -type f. Tìm thư mục sẽ là _-type _ d

Tip 2 : nếu bạn muốn tìm các file và thư mục không có tên là Test.sh thì hãy thêm -not vào trước -name hay -iname để phủ định kết quả.

Tìm theo thư mục

Như ở trên bạn đang tìm all trong máy tính của bạn, nhưng nếu bạn chỉ định thư mục tìm kiếm thì find chỉ tìm trong đó mà thôi. Ngoài ra, nếu bạn không muốn tìm quá sâu bên trong thư mục đó, bạn sẽ dùng đến mindepth và maxdepth. Bạn chỉ tìm trong thư mục /home và trong thư mục con trự tiếp của nó thì sẽ như sau :

1
2
3
4
5
# find /home -iname "Test.sh" -maxdepth 1 -type f
/home/Test.sh
/home/yourname/Test.sh
/home/yourname/test.sh
 

Hơn nữa bạn có thể sử dụng kết hợp với mindepth để tìm trong khoảng level nào đó của thư mục :

1
2
3
4
5
# find /home -iname "Test.sh" mindepth 1 -maxdepth 2 -type f
/home/yourname/Test.sh
/home/yourname/test.sh
/home/yourname/test/TEST.sh
 

Như trên thì /home là điểm bắt đầu, sâu xuống 1 level là để /yourname, tối đa tìm ở level 2 là /test và chúng ta có kết quả như trên.

Thực thi lệnh với các file tìm được

Đôi khi chúng ta muốn kết hợp luôn các command khác với find, để xử lý các kết quả tìm được, như xóa chúng đi, hay copy đến thư mục chỉ định … lúc đó bạn cần dùng đến -exec (viết tắt của execute). Như bên dưới tôi muốn tính toán mã md5 của các file tìm được :

1
2
3
4
5
# find /home -type f -iname "Test.sh" -maxdepth 1 -exec md5sum {} \;
d4dd8cd98f00b204e9800998fjgwjwor /home/Test.sh
r31g8cd98f00b204e98009953j0f27g8 /home/yourname/Test.sh
9k9d8cggkf00b204e980fd9sgs8s69gk /home/yourname/test.sh
 

Các bạn thấy ở trên tôi dùng {} đây là đối số truyền vào cho md5sum, nó là file hiện tại khi find tìm thấy 1 file nào đó. Còn ; là để kết thúc việc thực thi với file hiện tại đó.

1
2
# find /home -type f -iname "Test.sh" -maxdepth 1 -exec rm {} \;
 

Một ví dụ khác, nếu chạy lệnh trên tức là bạn đã remove hết các file tìm được bởi find.

Tìm file trống ( 0 byte)

Đôi khi có những file trống được tạo ra mặc định, hoặc do nguyên nhân nào đó và bạn muốn kiểm tra xem có những fie dạng như vậy không thì find hoàn toàn hỗ trợ được bạn bằng cách truyền vào -empty:

1
2
# find /home -empty
 

Tip 1 : hãy thêm -exec rm {} ; để loại bỏ những file trống không cần thiết.

Tip 2 : khoan ! bạn có thể xóa mất các file hệ thống empty, đôi khi nó trống nhưng lại có ích để làm gì đó.

1
2
# find /home -empty -not -name ".*" -exec rm {} \;
 

chỗ “.*” ở trên có ý nghĩa là không remove các file bắt đầu bằng ., còn * như các bạn đã biết nó thay thế cho bất kì kí tự nào. Mà các file hệ thống thường là ẩn và bắt đầu bằng .

Tìm file theo dung lượng

Bạn có thể sử dụng dung lượng để tìm kiếm bằng cách truyền vào -size như sau :

1
2
# find /home -iname "test.*" -size 10M -type f
 

Đoạn lệnh trên sẽ tìm kiếm một cách chính xác dung lượng các file bắt đầu bằng test không phân biệt hoa thường và có đuôi bất kì, nhưng chỉ những file nặng 10M.

Tip : Bạn chỉ cần dùng -10M hay +10M để tìm những file nhỏ hơn hoặc lớn hơn 10M -> thêm – hay + trước con số dung lượng file.

Ví dụ như tôi hằng ngày hay zip 1 vài thư mục thành .zip và sau một thời gian chúng không còn cần thiết nữa. Tôi sẽ chạy lệnh sau để remove các file nặng hơn 5M :

1
2
# find /home/mydir/zip -name "*.zip" -size +5M -type f -exec rm {} \;
 

Tìm file theo thời gian

Trước tiên nếu bạn chưa biết thì cần hiểu đối với 1 file nó sẽ có 3 yếu tố thời gian như sau :

  • Thời gian truy cập (access time) : là thời điểm cuối cùng mà file đó được bạn hay ai đó truy cập vào
  • Thời gian chỉnh sửa (modification time) : nếu ai đó truy cập vào file mà có chỉnh sửa nội dung nào đó thì chính là thời gian chỉnh sửa này, nó khác với access time nhé.
  • Thời gian thay đổi : mỗi file sẽ có một inode number riêng của chúng -> đây chính là thời điểm cuối cùng mà inode của 1 file bị thay đổi.

Do chưa rõ lắm inode là gì? nên trong bài này tôi chỉ quan tâm đến 2 cái đầu 😃

Với find command thì bạn có thể chỉ định thời gian đến từng phút (dùng min hoặc theo từng ngày một (dùng time). Ví dụ, tôi thường download file mà không để ý tên file là gì rồi mở file ra ngay, chỉnh sửa rồi sau đó save lại. Và một thời gian cần đến file đó thì rất khó để tìm trong đống file trong thư mục Downloads.

1
2
# find /home/myname/Downloads -name *.xlsx -type f -mtime -1
 

Câu trên nghĩa là tôi tìm kiếm tất cả các file Excel mà đã được chỉnh sửa trong vòng 1 ngày trước.

Tip 1 : để tìm trong vòng bao nhiêu phút thì bạn dùng -mmin

1
2
# find /home/myname/Downloads -name *.xlsx -type f -mtime -60
 

Tip 2 : m ở đây là modification. Nếu bạn muốn tìm the thời gian truy cập thì dùng -atime hoặc -amin

Lưu kết quả tìm được ra file để tổng hợp

Đôi khi tôi muốn lưu các file tìm được vào một file để tổng hợp kết quả mà không in ra màn hình console như bình thường, việc này rất đơn giản :

1
2
# find /home/myname/Downloads -name *.xlsx -type f > result.txt
 

Như trên tôi muốn xem có những file Excel nào đã từng download nên lưu chúng vào result.txt, sau đó tôi có thể loại bớt những file không cần đến nữa chẳng hạn.

Tip : Đôi khi find command không đọc được file nào đó (file ẩn chẳng hạn) hoặc có lỗi nào đó sẽ bắn ra cả nội dung lỗi nên không cần thiết để lưu chúng cùng với kết quả. Bạn chỉ cần thêm _2>/dev/null_như sau :

1
2
# find /home/myname/Downloads -name *.xlsx -type f 2>/dev/null > result.txt
 

Đoạn lệnh trên sẽ catch tất cả các lỗi xảy ra nếu có và đẩy vào /dev/null. Còn kết quả tìm vẫn được lưu vào result.txt

Trên đây là những hữu ích mà find command mang lại cho bạn và tôi nghĩ là nếu dùng Linux thường xuyên thì cũng nên biết để phòng thân 😃 chúng đều là những tình huống theo tôi là khá common trong công việc hàng ngày. Find còn làm được nhiều hơn thế, nên bạn có nhu cầu phức tạp hơn, sâu hơn thì có thể vào đây để đọc, và tất nhiên nó là tiếng Anh nhé 😉

Tham khảo

Bài viết gốc: https://viblo.asia/p/cung-tim-hieu-find-command-trong-linux-ymwGXVPnR4p1

You Might Also Like

Series Pentesterlab – Day 02: Unix phần 2

Hướng dẫn lệnh grep trong Linux

Series Pentesterlab – Day 02: Unix phần 1

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
Fantasista 11/08/2021
Share this Article
Facebook TwitterEmail Copy Link Print
Share
Posted by Fantasista
Follow:
Xin chào, mình là Tân. Mình tạo blog này 01/06/2021. Đây là nơi mình ghi chép lại những suy nghĩ, cảm nhận trong cuộc sống và những kiến thức mà mình học được.
Previous Article Series Pentesterlab – Day 02: Unix phần 1
Next Article Hướng dẫn lệnh grep trong Linux
Leave a comment Leave a comment

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Stay Connected

235.3k Followers Like
69.1k Followers Follow
11.6k Followers Pin
56.4k Followers Follow
136k Subscribers Subscribe
4.4k Followers Follow
- Advertisement -
Ad imageAd image

Latest News

Hướng dẫn chung về Kali Linux
Bảo mật Công cụ bảo mật 27/05/2022
Ransomware tấn công có chủ đích vào các tổ chức
An toàn thông tin Bảo mật 03/11/2021
Hướng dẫn kích hoạt IDM Full không cần crack, sử dụng key an toàn
Phần mềm Tiện ích 10/10/2021
Series Pentesterlab – Day 22: CVE-2007-1860: mod_jk double-decoding
Bảo mật Pentest 04/10/2021
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg
@envato
1.5k Following
71k Followers
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 9 giờ ago
@barts_ron Hi! Thanks for contacting us. It looks like all our systems are running smoothly. You can check the stat… https://t.co/Haz9yXFnMM
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg 15 giờ ago
@NeilEvansRocks Thank you for reaching out. I am happy to answer general questions here. For more personalized assi… https://t.co/KG3fxSwwXS
https://pbs.twimg.com/profile_images/1542611508093661184/MR5LYGqH_normal.jpg Mar 26, 2023
@olaarrh Hi there, to continue we would need you to submit a help ticket since we will be dealing with sensitive ac… https://t.co/sbSNJf6LC7

You Might also Like

Bảo mậtLinuxPentest

Series Pentesterlab – Day 02: Unix phần 2

12/08/2021
Linux

Hướng dẫn lệnh grep trong Linux

11/08/2021
LinuxPentest

Series Pentesterlab – Day 02: Unix phần 1

10/08/2021
//

We influence 20 million users and is the number one business and technology news network on the planet

Quick Link

  • About
  • Contact
  • FAQs

Top Categories

  • Home
  • Network
  • System
  • Software
  • Security
  • Coding
  • Life
FantasistaFantasista
Follow US

© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.

Join Us!

Subscribe to our newsletter and never miss our latest news, podcasts etc..

Zero spam, Unsubscribe at any time.

Removed from reading list

Undo
Welcome Back!

Sign in to your account

Register Lost your password?