2016-07-26 25 views
3

Ich listet Verzeichnisse im aktuellen Verzeichnis auf. Hier sind die beiden Befehle Ich vergleiche:Warum ist `find -depth 1` so langsam, Verzeichnisse aufzulisten?

ls -F | grep/

find . -type d -depth 1 

Der ls Befehl ist quasi augenblicklich während der find Befehl etwa 10 Sekunden dauert. Es fühlt sich an, als ob der Befehl find den Inhalt jedes Unterverzeichnisses durchläuft, während es von dem Befehl nicht benötigt wird.

Was ist find . -type d -depth 1 tun, um so langsam zu sein?

Antwort

10

-depth stoppt nicht bei einer einzelnen Schicht, Sie wollen -maxdepth dafür. Stattdessen teilt es find mit, den Inhalt der Verzeichnisse vor sich selbst zu verarbeiten, d. H. Eine Tiefensuche zuerst.

Versuchen Sie stattdessen

find . -maxdepth 1 -type d 

es mehr als ls -F | grep / finden, weil es auch war es immer schneller, so etwas (0,091 Sekunden im Vergleich zu 0,1) „versteckt“ Dateien und für mein Beispiel suchen.