Blitzschnelle, in Rust erstellte Dateisuchkiste
Bitte melden Sie alle Probleme, die bei der Verwendung der Rust-Suche auftreten, hier: Probleme
Fügen Sie rust_search = "2.0.0"
in Cargo.toml hinzu.
[ 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 ) ;
}
}
Suche ohne Ähnlichkeitssortierung
["afly.txt", "bfly.txt", "flyer.txt", "fly.txt"]
Suche mit Ähnlichkeitssortierung
["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 ( ) ;
Um Dateien nach Erstellungsdatum, Änderungsdatum, Dateigröße und/oder benutzerdefiniertem Filter zu filtern, verwenden Sie:
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 ( ) ;
Weitere Beispiele finden Sie in der Dokumentation
Der Unterschied in der Stichprobengröße ist auf die Tatsache zurückzuführen, dass fd und glob unterschiedliche Tools sind und unterschiedliche Anwendungsfälle haben. fd ist ein Befehlszeilentool, das nach Dateien und Verzeichnissen sucht. glob ist eine Bibliothek, mit der nach Dateien und Verzeichnissen gesucht werden kann. Der Benchmark wird auf einem MacBook Air M2 mit 16 GB Unified-Speicher durchgeführt.
Benchmarks werden mit Hyperfine durchgeführt. Benchmarks-Dateien sind im Benchmarks-Laufwerksordner verfügbar.
Der Benchmark wurde für Verzeichnisse mit 300.000 Dateien durchgeführt.
Befehl / Bibliothek | Bedeutet] | Min. [s] | Max [s] | Relativ |
---|---|---|---|---|
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 |
Der Benchmark wurde für Verzeichnisse mit 45.000 Dateien durchgeführt.
Befehl / Bibliothek | Mittelwert [ms] | Min. [ms] | Max. [ms] | Relativ |
---|---|---|---|---|
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.
Jeder Beitrag wäre sehr dankbar, da sich diese Bibliothek noch in einem frühen Stadium befindet.
Wenn Sie zu diesem Projekt beitragen möchten, befolgen Sie bitte die folgenden Schritte:
Dieses Projekt ist unter den Bedingungen der MIT-Lizenz lizenziert.
Klicken Sie auf die Schaltfläche unten, um dem Discord-Server oder LinkedIn beizutreten