Linux Befehl:
-
Hallo Forum,
ich möchte alle doc und txt Dateien in eine Datei schreiben. Außerdem möchte ich vor jeder Datei eine Newline und den Namen schreiben.
So weit bin ich schon:
find -name *.txt -exec cat {} \; > all.txtWenn ichs so mache:
find -name *.txt -exec echo {} \; cat {} \; > all.txtgeht es nicht. Was nimmt man da?
Wie verwendet man hier RegExpressions? (Notfalls kopiere ich nachher beide Dateien zusammen)
-
Hat sich erledigt. Anstelle des einzelnen Kommandos habe ich ein Script ausführen lassen:
find -name *.txt -exec sh myscript {} \; > all.txt#!/bin/sh echo \# $1 cat "$1 $2 $3 $4 $5 $6 $7 $8 $9" echo
-
Du musst verhindern, dass die Shell das * expandiert
find -name '*.txt' -exec cat \{} \; > datei
-
Ne, eigentlich wollte ich kein Script schreiben. Der Find Befehl sollte auf der Bash für jede gefundene Datei zwei Befehle ausführen ("echo \n {} \n" und "cat {}"). Das geht scheinbar nicht, weil der Find Befehl nur alles bis zum ersten Semikolon ausführt. (&& und || gehen auch nicht, selbst wenn man sie maskiert). Statt der 2 Befehle habe ich dann ein Skript geschrieben...
-
Ach so! Hab Dich falsch verstanden. Du meinst das das * erst gar nicht den Find Befehl erreicht. Komischerweise funktioniert es auch so bei meinem Cygwin Linux.
-
Das funktioniert nur dann zufällig, wenn es im aktuellen Verzeichnis keine Unterverzeichnisse, in denen *.txt-Dateien liegen, gibt. BTW ich kenn Cygwin, aber von Cygwin Linux hab ich noch nix gehört.