Sử dụng find
:
find /tmp/ -type f -exec md5sum {} + | grep '^file_md5sum_to_match'
Nếu bạn tìm kiếm thông qua /
thì bạn có thể loại trừ /proc
và /sys
xem find
ví dụ lệnh sau :
Ngoài ra tôi đã thực hiện một số thử nghiệm, find
mất nhiều thời gian hơn và ít CPU và RAM hơn trong đó tập lệnh ruby mất ít thời gian hơn nhưng nhiều CPU và RAM hơn
Kết quả kiểm tra
Tìm thấy
[root@dc1 ~]# time find / -type f -not -path "/proc/*" -not -path "/sys/*" -exec md5sum {} + | grep '^304a5fa2727ff9e6e101696a16cb0fc5'
304a5fa2727ff9e6e101696a16cb0fc5 /tmp/file1
real 6m20.113s
user 0m5.469s
sys 0m24.964s
Tìm với -prune
[root@dc1 ~]# time find / \( -path /proc -o -path /sys \) -prune -o -type f -exec md5sum {} + | grep '^304a5fa2727ff9e6e101696a16cb0fc5'
304a5fa2727ff9e6e101696a16cb0fc5 /tmp/file1
real 6m45.539s
user 0m5.758s
sys 0m25.107s
Tập lệnh Ruby
[root@dc1 ~]# time ruby findm.rb
File Found at: /tmp/file1
real 1m3.065s
user 0m2.231s
sys 0m20.706s