Linux: l'albero -i -f -L $ depth dovrebbe essere più veloce di trovare -maxdepth $ depth?


5

Sto interrogando directory specifiche per vedere se trovo file con uno schema specifico in esse e l'ho provato con due diversi comandi:

findComando standard :

find -L $unix_dir\*/ -maxdepth $maxdepth -name \"$filepattern\"

ed una treee grepdi comando di sostituzione:

tree -L $maxdepth -l -i -f $unix_dir*/ | grep '$filepattern'

Il secondo dovrebbe essere più veloce per qualche motivo? Trovo che a volte sia più veloce ma a volte altrettanto veloce dell'altro comando, e non sono sicuro di quale sia la teoria alla base di entrambi. Qualche idea?


3
Stai provando prima il findcomando, quindi esegui immediatamente il tree | grepcomando? In tal caso, la struttura della directory viene probabilmente memorizzata nella cache mentre viene analizzata find.
Pioggia,

Risposte:


1

Direi che il secondo è più lento in quanto coinvolge due processi treee grepmentre il primo ha un solo processo find.

Inoltre, treescrive i nomi di tutti i file che trova nel flusso di output che viene quindi utilizzato grep. Allo stesso tempo, findstampa solo i nomi dei file corrispondenti.

Durante l'utilizzo find, tenta di far corrispondere solo il nome del file a quello specificato $filepattern. Nel secondo caso, il modello viene applicato al percorso completo del file. Pertanto, il secondo caso ha più dati da elaborare.

 
D'altra parte, il collo di bottiglia in questo test è il disco IO. Entrambi finde treeattraversano le directory.
Se si eseguono i test uno dopo l'altro, il sistema operativo memorizzerà nella cache i dati relativi alle directory e ai nomi dei file, quindi il comando verrà completato più rapidamente.


0

Il comando findscrive più caratteri sullo schermo perché scrive sempre il percorso completo del file. Inoltre, il confronto con un filepattern può essere più lungo nel comando find (dipende dall'implementazione). Ad esempio, con pseudocodice:

  • trova

    • Estrai il nome file
    • Confronta il nome file con filepattern
  • albero

    • Confronta il nome file con filepattern

Mi aspetto che la scrittura di fullpath non sia un problema, perché le treeopzioni che sto usando sono le stesse.
719016,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.