如何将命令行搜索中的文件内容复制到单个文件中?

如何将命令行搜索中的文件内容复制到单个文件中?

将所有搜索结果的内容复制到一个文件中。我不想复制搜索结果,而是复制搜索结果的文件内容。

例如,我的搜索结果返回了 10 个文件的列表,然后我想将这 10 个文件的内容复制到一个文件中(例如dump.test)。

答案1

使用 GNUgrepxargs

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每个非空文件运行一个命令。

相关内容