如何將命令列搜尋中的文件內容複製到單一文件中?

如何將命令列搜尋中的文件內容複製到單一文件中?

將所有搜尋結果的內容複製到一個文件中。我不想複製搜尋結果,而是複製搜尋結果的文件內容。

例如,我的搜尋結果傳回了 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每個非空檔案運行一個命令。

相關內容