Копировать содержимое всех результатов поиска в один файл. Я не хочу копировать результат поиска, а хочу копировать содержимое файла результата поиска.
Например, мой результат поиска вернул список из 10 файлов, и я хотел бы скопировать содержимое этих 10 файлов в один файл (например, dump.test
).
решение1
С GNU grep
и xargs
:
grep -rlZ search-text some/dir/ | xargs -r0 cat > dump.test
-l
— вывести список файлов, содержащих хотя бы одну строку, соответствующую search-text
. -Z
— вывести эту строку с разделителями NUL, чтобы ее можно было безопасно передать в xargs -0
.
-r
для рекурсивного поиска во всех файлах внутри some/dir/
.
POSIXly:
find some/dir -type f -size +0 -exec grep -q search-text {} \;
-exec cat {} + > dump.test
Это будет менее эффективно, поскольку означает выполнение одной grep
команды для каждого непустого файла.