Ich habe ein Verzeichnis mit ungefähr 100.000 Dateien. ls -f hängt über eine Minute. Ich lief strace und fing sofort an, getdents zu sehen, so dass ls das Verzeichnis klar liest. Ich sehe auch viele Anrufe bei brk, so dass ls Dinge im Speicher eindeutig puffert. Ich habe ein einfaches Programm geschrieben, das readdir aufruft und Dateinamen ausgibt und sofort reagiert. Aber ls -f liefert keine Ausgabe. Was gibt? Ich dachte, der springende Punkt von -f ist, dass es ls dazu bringt, nichts weiter als readdir zu tun. Gibt es eine tragbare, zuverlässige Möglichkeit, den Inhalt eines Verzeichnisses aufzulisten? (Beachten Sie, dass dies ls von gnus Coreutils unter Linux ist.)
-BEARBEITEN-
Es gab einen Alias, aber "/ bin / ls -1f> / dev / null" dauert 8 bis 15 Sekunden, "/ bin / ls -1fx> / dev / null" dauert 4 bis 11 Sekunden, aber ein einfaches Programm das dauert nur readdir dauert .011 Sekunden. Was muss ich tun, damit die Gnus nicht saugen?
In coreutils 7.0 wurde eine Optimierung hinzugefügt (Commit 8d974b00fbbc2025de63e1e6d54827648fefa1c4):
Die erste Erklärung, die mir einfällt, ist, dass Sie eine ältere Version von Coreutils ausführen. Sie müssen ein Upgrade durchführen.
quelle