صندوق بحث سريع للغاية عن الملفات مدمج في Rust
الرجاء الإبلاغ عن أية مشكلات تواجهك عند استخدام بحث الصدأ هنا: المشكلات
أضف rust_search = "2.0.0"
في Cargo.toml.
[ dependencies ]
rust_search = " 2.0.0 "
use rust_search :: SearchBuilder ;
fn main ( ) {
let search : Vec < String > = SearchBuilder :: default ( )
. location ( "~/path/to/directory" )
. search_input ( "what to search" )
. more_locations ( vec ! [ "/anotherPath/to/search" , "/keepAddingIfYouWant/" ] )
. limit ( 1000 ) // results to return
. ext ( "extension" )
. strict ( )
. depth ( 1 )
. ignore_case ( )
. hidden ( )
. build ( )
. collect ( ) ;
for path in search {
println ! ( "{}" , path ) ;
}
}
use rust_search :: { SearchBuilder , similarity_sort } ;
fn main ( ) {
let search_input = "fly" ;
let mut search : Vec < String > = SearchBuilder :: default ( )
. location ( "~/Desktop/" )
. search_input ( search_input )
. depth ( 1 )
. ignore_case ( )
. build ( )
. collect ( ) ;
similarity_sort ( & mut search , & search_input ) ;
for path in search {
println ! ( "{:?}" , path ) ;
}
}
البحث بدون فرز التشابه
["afly.txt", "bfly.txt", "flyer.txt", "fly.txt"]
البحث باستخدام نوع التشابه
["fly.txt", "flyer.txt", "afly.txt", "bfly.txt",]
use rust_search :: SearchBuilder ;
let files : Vec < String > = SearchBuilder :: default ( )
. location ( "/path/to/directory" )
. ext ( "file_extension" )
. build ( )
. collect ( ) ;
use rust_search :: SearchBuilder ;
let files : Vec < String > = SearchBuilder :: default ( )
. location ( "/path/to/directory" )
. depth ( 1 )
. build ( )
. collect ( ) ;
لتصفية الملفات حسب تاريخ الإنشاء، وتاريخ التعديل، وحجم الملف، و/أو مرشح_التخصيص، استخدم:
use rust_search :: { FileSize , FilterExt , SearchBuilder } ;
use std :: time :: { Duration , SystemTime } ;
let search : Vec < String > = SearchBuilder :: default ( )
. location ( "~/path/to/directory" )
. file_size_greater ( FileSize :: Kilobyte ( 200.0 ) )
. file_size_smaller ( FileSize :: Megabyte ( 10.0 ) )
. created_after ( SystemTime :: now ( ) - Duration :: from_secs ( 3600 * 24 * 10 ) )
. created_before ( SystemTime :: now ( ) )
. modified_after ( SystemTime :: now ( ) - Duration :: from_secs ( 3600 * 24 * 5 ) )
. custom_filter ( |dir| dir . metadata ( ) . unwrap ( ) . is_file ( ) )
. custom_filter ( |dir| !dir . metadata ( ) . unwrap ( ) . permissions ( ) . readonly ( ) )
. build ( )
. collect ( ) ;
لمزيد من الأمثلة، يرجى الرجوع إلى الوثائق
يرجع الاختلاف في حجم العينة إلى حقيقة أن fd وglob أداتان مختلفتان ولهما حالات استخدام مختلفة. fd هي أداة سطر أوامر تبحث عن الملفات والأدلة. glob هي مكتبة يمكن استخدامها للبحث عن الملفات والأدلة. تم إجراء الاختبار على جهاز MacBook Air M2، بذاكرة موحدة سعة 16 جيجابايت.
يتم إجراء المعايير باستخدام الدقة الفائقة، وتتوفر ملفات المعايير في مجلد محرك المعايير.
تم إجراء الاختبار على أدلة تحتوي على 300 ألف ملف.
القيادة / المكتبة | وسائل] | الحد الأدنى [ق] | ماكس [ق] | نسبي |
---|---|---|---|---|
rust_search | 1.317 ± 0.002 | 1.314 | 1.320 | 1.00 |
glob | 22.728 ± 0.023 | 22.690 | 22.746 | 17.25 ± 0.03 |
تم إجراء الاختبار على أدلة تحتوي على 45 ألف ملف.
القيادة / المكتبة | يعني [مللي ثانية] | دقيقة [مللي ثانية] | ماكس [مللي ثانية] | نسبي |
---|---|---|---|---|
rust_search | 680.5 ± 2.1 | 678.3 | 683.6 | 1.00 |
fd -e .js | 738.7 ± 10.2 | 720.8 | 746.7 | 1.09 ± 0.02 |
+ rust_search is 17.25 times faster than Glob.
+ rust_search** is 1.09 times faster than FD.
أي مساهمات ستكون موضع تقدير كبير لأن هذه المكتبة لا تزال في مراحلها الأولى.
إذا كنت ترغب في المساهمة في هذا المشروع، يرجى اتباع الخطوات التالية:
هذا المشروع مرخص بموجب شروط ترخيص MIT.
انقر فوق الزر أدناه للانضمام إلى خادم الخلاف أو Linkedin