führe ich einige Verzeichnisse und Dateien, die wie folgt aussieht:Wie kann ich habe eine Katze mit mehreren Rohren rekursiv
/my/directories/directory0/ | -->File1.txt | -->File2.txt /my/directories/directory1/ | -->File1.txt | -->File2.txt /my/directories/directory2/ | -->File1.txt | -->File2.txt /my/directories/directory3/ | -->File1.txt | -->File2.txt
Dies sind CSV-Dateien, und ich versuche, die dritte Spalte gezählt zu bekommen, und sortiert vom höchsten zum niedrigsten.
Momentan kann ich dies erreichen, aber nur innerhalb jedes Verzeichnisses spezifisch. Zum Beispiel, wenn ich diese laufen:
cd /my/directories/directory0/ cat *.txt | awk -F "," '{print $3}' | sort | uniq -c | sort -nr > finalOutput.txt
Dann bekomme ich genau das, was ich will, aber nur mit den Daten in diesem Verzeichnis. Ich möchte alles aus allen/my/directories/Unterverzeichnissen in eine einzige Datei katalysieren.
Ich habe versucht, ls
oder find
zu verwenden, um dies zu erreichen, aber ich kann es nicht funktionieren. Ich weiß, Sie können rekursiv Katze auf diese Weise, ähnlich wie diese:
find /my/directories/ -name '*.txt' -exec cat {} \; > finalOutput.txt
Aber ich habe dies mit einem Mehr Kommando über arbeiten nicht in der Lage zu bekommen. Jede Hilfe wird geschätzt.
Was ist los mit 'finden/my/Verzeichnisse/-name '* .txt' exec cat {} \; | awk ... '? –
Es ist nichts falsch daran. Ich kannte einfach nicht die korrekte Syntax nach dem -exec-Flag. Dies ist eine gültige Antwort, weil es den Fehler in meiner Syntax zeigt. – trueCamelType