將所有搜尋結果的內容複製到一個文件中。我不想複製搜尋結果,而是複製搜尋結果的文件內容。
例如,我的搜尋結果傳回了 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
每個非空檔案運行一個命令。