Ich hatte eine riesige Menge an Daten, über 50*50*10000
Dateien mit der gesamten Dateigröße 3TB
. Die Dateistruktur wie folgt aussieht:schneller Weg, um Dateien in Millionen von Dateien zu finden
/myhdd/Experiment_{id}/Run_{id}/Filename
nun einen Dateinamen gegeben, ich suchen möchten, wo es ist; aber eine einfache find /myhdd -name "filename"
ist sehr ineffizient. Es muss die gesamte Festplatte nachschlagen, um eine Datei zu finden. Gibt es einen besseren Weg, dies zu tun, wie zum Beispiel einen Index meiner Dateistruktur zu erstellen, um zu beschleunigen find
?
Das sind 25 Millionen, keine Milliarden. Machen Sie einen Perl-Hash oder eine einfache Liste und 'grep' darin, damit Sie nicht alle Inodes lesen müssen. –
Ja, wenn Sie alle Dateinamen in eine Datei ablegen (find.> Filenames.txt), dann haben Sie eine nicht mehr als 1 GiB große Textdatei, in der Sie nach Namen grepen können. Kann es auch sortieren und dann 'sgrep' darauf verwenden (die Felder neu anordnen müssen, um den Dateinamen vorne zu haben). Oder komprimiere die unsortierte Version und suche darin mit 'zgrep'. – Velkan