将所有搜索结果的内容复制到一个文件中。我不想复制搜索结果,而是复制搜索结果的文件内容。
例如,我的搜索结果返回了 10 个文件的列表,然后我想将这 10 个文件的内容复制到一个文件中(例如dump.test
)。
答案1
使用 GNUgrep
和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
每个非空文件运行一个命令。