9 Stimmen

Wie kann ich Dateien in einem Unterverzeichnis mit Unix find execute und cat zu einer einzigen Datei zusammenfügen?

Ich kann das tun:

$ find .
.
./b
./b/foo
./c
./c/foo

Und dies:

$ find . -type f -exec cat {} \;
This is in b.
This is in c.

Aber nicht das:

$ find . -type f -exec cat > out.txt {} \;

Warum nicht?

0voto

Zsolt Botykai Punkte 48177

Oder lassen Sie einfach die Suche weg, die nutzlos ist, wenn Sie die wirklich tolle Z-Shell verwenden ( zsh ), und Sie können dies tun:

setopt extendedglob

(dies sollte in Ihrem .zshrc ) Dann:

cat **/*(.) > outfile 

funktioniert einfach :-)

0voto

Milan Babuškov Punkte 57324

Versuchen Sie dies:

(find . -type f -exec cat {} \;) > out.txt

0voto

ljorquera Punkte 1070

In der Bash könnten Sie Folgendes tun

cat $(find . -type f) > out.txt

mit $( ) können Sie die Ausgabe eines Befehls abrufen und an einen anderen Befehl weitergeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X