Как скопировать содержимое файлов из командной строки поиска в один файл?

Как скопировать содержимое файлов из командной строки поиска в один файл?

Копировать содержимое всех результатов поиска в один файл. Я не хочу копировать результат поиска, а хочу копировать содержимое файла результата поиска.

Например, мой результат поиска вернул список из 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команды для каждого непустого файла.

Связанный контент