2017-02-16 13 views
1

Ich habe eine CSV-Datei in jedem Unterverzeichnis (jedes Unterverzeichnis heißt RUN1, RUN2 usw.), das mit 'mod' beginnt. Ich möchte sie finden, die jeweils letzte Zeile abrufen und eine neue Datei erstellen, die nur diese Zeilen enthält. wenn mod1.csv im Unterverzeichnis RUN1 Zum Beispiel hat:Bash: tail, find und cat

1, 2, 3 

4, 5, 6 

und mod2.csv im Unterverzeichnis RUN2 hat

6,7,8 

10,11,12 

möchte ich eine neue Datei results.csv erstellen, die

4, 5, 6 

10, 11, 12 
enthält

Hier ist mein Versuch:

find $(pwd)/RUN* -name 'mod*.csv' tail -n +1 |xargs cat > results.csv 

Der Fehler Ich erhalte ist

find: paths must precede expression: tail 
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] 

Ich habe seen this aber es scheint nicht das Problem zu lösen. Irgendwelche Ideen?

+0

Du „exec“ –

+0

Dank @WilliamPursell fehlt, aber wo soll ich es sagen? Immer noch ziemlich neu zu bash. – StatsSorceress

+1

Das Programm 'find' hat übrigens nichts mit' bash' zu tun. Es ist unabhängig, keine integrierte Shell und kann von jeder Sprache aus aufgerufen werden. – cdarke

Antwort

2

Ich denke Chepner vergessen -exec zu sagen, was zu Schwanz geht:

find ./RUN* -name 'mod*.csv' -exec tail -1 {} \; > results.csv 
0

Sie haben vergessen, die -exec primäre, und Sie sollten xargs nicht brauchen:

find ./RUN* -name 'mod*.csv' -exec tail -n +1 {} \; > results.csv 

Ihr xarg Befehl die letzte Zeile jeder Datei übernehmen würde, und behandeln, dass als Dateinamen.

+0

Wie lange sollte das dauern? Ich bin mir nicht sicher, ob mein Prozess hängt .... – StatsSorceress

+0

Die meiste Laufzeit sollte die Suche (rekursiv) in '.', um passende Dateien zu finden. Sie können 'find ./RUN*-name 'mod * .csv'' ausführen, um die beteiligten CSV-Dateien einfach aufzulisten. – chepner

+0

Das Auflisten der Dateien dauert weniger als 5 Sekunden. Es gibt nur eine übereinstimmende Datei pro Unterverzeichnis. Gibt es eine Möglichkeit, dies zu beschleunigen? Es hat 5 Minuten bis jetzt genommen. – StatsSorceress

Verwandte Themen