Vor vielen Jahren erinnere ich mich vage daran, dass der Finder in Mac OS X Probleme bekam, wenn ein Ordner 2.000 - 3.000 Elemente oder mehr enthielt.
Apple doc sagt, dass das HFS Plus -Dateisystem eine theoretische Grenze von 2 Milliarden Dateien pro Ordner in allen Mac OS X-Versionen hat.
Was ist die praktische Grenze?
Wird es ein Problem sein, 10.000 Fotos in einem Ordner zu haben?
Scheint, dass ungefähr 10.000 sicher sind. Ich habe jedoch festgestellt, dass der Finder, wenn Sie viel höher gehen, wie 50.000, die Dateien im Verzeichnis nicht einmal auflisten wird, wenn Sie versuchen, es zu durchsuchen. Ich vermute, dass viele Datenwiederherstellungsprogramme aus diesem Grund alle 10.000 Dateien einen neuen Ordner erstellen, wenn Sie Dateien in RAW schnitzen.
Sie können dies ganz einfach selbst ausprobieren, indem Sie Folgendes im Terminal ausführen
mkdir ~/t
cd ~/t
dd if=/dev/random of=test bs=1024 count=16
for i in {1..10000}; do cp test test.$i; done
um einen Ordner mit 10'000 Dateien mit je 16kB zu erstellen (ersetzen Sie die 16 in der dritten Zeile durch eine andere Zahl für unterschiedlich große Dateien).
/tmp
wäre eine bessere Wahl als ~/
./tmp
ist) und ein Symlink, zu /private/tmp
dem sich standardmäßig auf der (einzigen) Hauptpartition befindet ./tmp
wird zwischen Neustarts gelöscht. (Anders als /var/tmp
). #alt.follkore.computers beiseite: Ich kenne Administratoren, die den neugierigen Benutzer verfluchen, der eine winzige Datei mit einem großen Loch erstellt hat, um lseek
es auszuprobieren, wenn die Anzahl der Bänder für ihre Sicherung die Kapazität des zu sichernden Dateisystems weit überschritten hat ...Antworten anhand eines praktischen Beispiels: Ich habe jetzt 326.000 Dateien in einem Ordner, die von einer Anwendung erstellt wurden, die Bits von einem Server herunterlädt. Die Dateien sind gezippte XML-Dateien, und meine Anwendung extrahiert XML-Daten daraus und speichert sie in einer lokalen Datenbank.
Die Anwendung wird über die Befehlszeile ausgeführt. Alles funktioniert ohne Probleme, aber rm *
oder ls *
funktioniert nicht aufgrund der Erweiterung des Platzhalters (Fehlermeldung Argument list too long
). Da die Dateien in einem temporären Ordner gespeichert sind, kann ich den Ordner nach der Verarbeitung der Dateien einfach entfernen.
Ich habe jedoch nicht versucht, den Ordner mit dem Finder zu öffnen. Ich vermute, dass das sehr langsam sein könnte, wenn überhaupt möglich.
find | xargs
!)Es sind mehrere Grenzen zu berücksichtigen, die in einigen Kommentaren angesprochen wurden:
Argumentlänge und Shell-Erweiterung - ein einfacher echo *
Fehler wird behoben, wenn die verkettete Länge der Dateinamen, die das Sternchen erweitert, diese Grenze erreicht. Wenn Sie in diese Falle laufen, find
wird es oft Ihr Freund sein. find . -depth 1 -type f | exec echo {} \;
wäre ein funktionierender Ersatz für das echo *
oben erwähnte Unschuldige, beschränkt auf das Auflisten von Dateien. ( echo
durch die Aktion Ihrer Wahl zu ersetzen)
Beschränkungen pro Programm für die Größe interner Datenstrukturen, die zum Halten von Verzeichnisinhalten verwendet werden (Finder, alle Arten von Tools, die versuchen, Verzeichnislisten zu lesen).
Cache-Größe für die Verzeichnissuche. Während das Dateisystem möglicherweise 2,1 Milliarden Dateien innerhalb der Festplattenstruktur eines Verzeichnisses speichern kann, ist es nicht angenehm, mit dieser Zahl zu arbeiten, und Sie wären gut beraten, wenn Sie eine Strategie zum Sortieren von Dateien in Unterverzeichnisse einführen Sie haben es mit Strukturen dieser Größe zu tun. (Hinweis: Diejenigen, die Web-Caching-Strukturen entwerfen, mussten sich damit auseinandersetzen - siehe Maltzahn/Richardson, Reducing the Disk I/O of Web Proxy Server Caches, Usenix 1999 .
Um den Zugriff auf häufig verwendete Plattenstrukturen zu beschleunigen, verwenden Dateisysteme (Speicher-)Cache, und die Größe dieser Caches ist begrenzt. Hier beginnt die plötzliche Strafe für große und nicht optimal strukturierte Verzeichnisse zu treffen. Je nach Häufigkeit und Intensität des Zugriffs auf diese Verzeichnisse kann die Strafe erheblich sein.
Der Artikel von Tsai et al. aus dem Jahr 2015, How to get more value from your file system directory cache wäre wahrscheinlich eine der einfacheren Einführungen in das Thema.
Apple hat dazu ein Support-Dokument :
Maximale Anzahl von Dateien (oder Dateien und Ordnern) in einem Ordner (alle Mac OS X-Versionen)
Bis zu 2,1 Milliarden (2)
ls
, können nicht find
, können sie nicht löschen und so weiter).
Markhunte
Ohad Schneider
rm -rf
).Geschichtsstempel
Fahrrad
Basil Bourque
Fahrrad
Abi Beckert
Becko