Ein Skript schreiben, um Verzeichnisse zu durchsuchen?


7

Mir wurde ein Datenbankprojekt zugewiesen, bei dem der von mir heruntergeladene Datensatz 50 GB betrug. Nach dem Extrahieren des Datensatzes habe ich 31 Ordner. Jeder dieser 31 Ordner enthält 23 Ordner. Und jeder dieser 23 Ordner enthält 59 (00-59) .json-Daten. Ich muss diese Daten an MongoDB weitergeben. Ich habe diesen Befehl dafür geschrieben:

 mongoimport --db twitter --collection twitterCol --file /media/shamsad/1E8A00A88A007E91/archiveteam-twitter-stream-2013-08/08/01/00/00.json

Das Schreiben dieses Befehls für 31 * 23 * 59 .json-Daten ist jedoch mühsam.
Wie kann ich ein Skript schreiben, um Verzeichnisse zu durchsuchen, jsons zu finden und mongoimport aufzurufen?

Antworten:


11

Kein Skript erforderlich, nur find:

find /media/shamsad/1E8A00A88A007E91/ -name '*.json' \
    -exec  mongoimport --db twitter --collection twitterCol --file {} \;

Könnten Sie bitte erklären, was "name '* .json data' \" dieser Teil bewirkt?
Sphoenix

@sphoenix -name '*.json data': alle Dateien mit json dataErweiterung. `\`: wird verwendet, um einen Befehl in zwei Zeilen zu schreiben; Bash wird also wissen, dass die folgende Zeile Teil desselben Befehls und kein anderer Befehl ist.
Ravexina

@sphoenix was ravexina gesagt hat. Lassen Sie mich wissen, wenn es noch unklar ist.
Terdon

Ich habe Ihren Befehl in eine db_script.sh geschrieben und ausgeführt. Es heißt "find: Pfade müssen vor dem Ausdruck stehen: Verwendung: find [-H] [-L] [-P] [-Olevel] [-D Hilfe | Baum | Suche | Statistik | Raten | Opt | Exec | Zeit] [Pfad ...] [Ausdruck] ./db_script.sh: Zeile 2: -exec: Befehl nicht gefunden "
sphoenix

@terdon Du hattest *.json datawo es nur sein sollte *.json. Ich habe es repariert.
Wjandrea
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.