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!
Contents
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