![Wie kopiere ich den Inhalt von Dateien aus einer Befehlszeilensuche in eine einzelne Datei?](https://rvso.com/image/38658/Wie%20kopiere%20ich%20den%20Inhalt%20von%20Dateien%20aus%20einer%20Befehlszeilensuche%20in%20eine%20einzelne%20Datei%3F.png)
Den Inhalt aller Suchergebnisse in eine einzige Datei kopieren. Ich möchte nicht das Suchergebnis kopieren, sondern den Dateiinhalt des Suchergebnisses.
Beispielsweise hat mein Suchergebnis eine Liste mit 10 Dateien zurückgegeben und ich möchte den Inhalt dieser 10 Dateien in eine einzige Datei kopieren (z. B. dump.test
).
Antwort1
Mit GNU grep
und xargs
:
grep -rlZ search-text some/dir/ | xargs -r0 cat > dump.test
-l
dient zum Auflisten der Dateien, die mindestens eine Zeile enthalten, die mit übereinstimmt search-text
. -Z
dient zum Drucken dieser Zeile mit NUL-Trennzeichen, sodass sie sicher an übergeben werden kann xargs -0
.
-r
um alle darin enthaltenen Dateien some/dir/
rekursiv zu durchsuchen.
POSIX:
find some/dir -type f -size +0 -exec grep -q search-text {} \;
-exec cat {} + > dump.test
Dies ist weniger effizient, da in diesem Fall ein grep
Befehl pro nicht leerer Datei ausgeführt wird.