Lệnh find trên LINUX

0
989

Bài tham khảo từ How To Use Find and Locate to Search for Files on a Linux VPS

Khi ở trên Windows ta có thể dùng Windows Explorer để tìm file, hay nếu dùng GNOME ta có thể dùng Nautilus để tìm. Nhưng mọi chuyện sẽ khác nếu bạn chỉ có Terminal để dùng, chứ không thể bấm vào icon kính lúp để tìm được.

Và lúc đấy chính là lúc mà lệnh find trở nên cực kỳ hữu dụng. Và tất nhiên, chúng ta có thể làm nhiều thứ hơn với các dòng lệnh, chứ không bị giới hạn như khi dùng GUI. Let’s begin!

Tìm theo tên

Cách tìm kiếm đơn giản, hiển nhiên nhất là tìm theo tên.

find -name "file_name"

Nhưng nếu chỉ dùng -name thì nó sẽ chỉ tìm những file có tên CHÍNH XÁC như những gì ta gõ. Nghĩa là nếu có 1 file là test.py và 1 file Test.py thì nó sẽ chỉ tìm file test.py thôi.

Để tránh tìm thiếu, ta hãy dùng -iname. Khi đó lệnh find sẽ tìm cả những file có ký tự in hoa.

Ta còn có option -not hay “!” để tìm tất cả file trừ file trong lệnh.

find -not -name “file_name_to_avoid”
find \! -name “file_name_to_avoid”

Muốn tìm tất cả các file có tên “test” thì ta gõ:

find -name test*

Tìm theo thể loại

Bạn còn có thể tìm theo đúng loại file muốn tìm, bằng cách dùng -type. Một số option:

  • f: regular file
  • d: directory (thư mục)
  • l: symbolic link
  • c: character devices
  • b: block devices

Ví dụ để tìm các file có đuôi ovpn ta gõ:

find -type f -name “*.ovpn”

Tìm theo thời gian và size

Find có thêm cả phần lọc kết quả theo thời gian và size nữa.

Size

Ta có thể tìm những file có dung lượng tùy ý, bằng cách dùng -size. Một số option thường dùng:

  • c: bytes
  • k: Kilobytes
  • M: Megabytes
  • G: Gigabytes
  • b: 512-byte blocks

Tìm tất cả các file nặng đúng 50 bytes:

find / -size 50c

Tìm các file nhỏ hơn 50 bytes:

find / -size -50c

Hoặc tìm các file nặng hơn 1GB:

find / -size +1G

Time

Linux lưu trữ 1 vài thông tin liên quan đến thời gian như: thời điểm truy cập, thời điểm chỉnh sửa, và thời điểm thay đổi file.

  • Access Time (thời điểm truy cập): Lần cuối cùng file được đọc hoặc ghi vào.
  • Modification Time (thời điểm chỉnh sửa): Lần cuối nội dung file được chỉnh sửa.
  • Change Time (thời điểm thay đổi): Lần cuối mà inode meta-data của file bị sửa.

Tương đương với các thông tin trên, ta dùng -atime, -mtime, -ctime, và cả “-” và “+” để lọc ra những thời gian trước hay sau thời điểm đó.

Để tìm các file được chỉnh sửa trong vòng 1 ngày trước:

find / -mtime 1

Tìm các file được truy cập trong ngày hôm qua:

find / -atime -1

Các file mà meta-data bị chỉnh sửa lần cuối là 3 ngày trước và hơn:

find / -ctime +3

Hoặc tìm theo phút chứ không phải ngày:

find / -mmin -1

sẽ tìm các file được chỉnh sửa trong vòng 1 phút trước.

Lệnh find còn có thể so sánh với 1 file, và trả về những file mới hơn:

find / -newer myfile

Tìm theo Owner và Permission

Chúng ta có thể tìm theo user hay group owner bằng -user và -group.

Tìm các file mà user “tu” sở hữu:

find / -user syslog

Hoặc các file mà group “sudo” sở hữu:

find / -group sudo

Chúng ta cũng tìm được theo permission của file, bằng -perm

Tìm những file có permission 644:

find / -perm 644

hoặc những file có permission ít nhất 644, nghĩa là gồm cả các file có permisson là 744:

find / -perm -644

4 is read
5 is read/execute (execute is always needed for directories)
6 is read/write
7 is read, write, and execute

Kết hợp find và command khác

Chúng ta còn có thể kết hợp find và các command khác để xử lý những file vừa tìm được với -exec

find find_parameters -exec command_and_params {} \;

Tìm các file có permission là 744 và chmod sang 755:

find / -type f -perm 777 -print -exec chmod 755 {} \;

Tìm 1 file test.py và xóa nó:

find . -type f -name "test.py" -exec rm -f {} \;

Hoặc xóa các file có đuôi .mp3 ở dir hiện tại:

find . -type f -name "*.mp3" -exec rm -f {} \;

Một số option khác

  • -empty để tìm các file/dir rỗng

Leave a Reply

avatar
  Subscribe  
Notify of