すべての検索結果の内容を 1 つのファイルにコピーします。検索結果をコピーするのではなく、検索結果のファイル内容をコピーします。
dump.test
たとえば、検索結果として 10 個のファイルのリストが返された場合、それらの 10 個のファイルの内容を 1 つのファイル (例)にコピーするとします。
答え1
GNUgrep
とxargs
:
grep -rlZ search-text some/dir/ | xargs -r0 cat > dump.test
-l
は、 に一致する行が少なくとも 1 つ含まれるファイルを一覧表示しますsearch-text
。-Z
は、その行を NUL で区切って出力し、 に安全に渡せるようにしますxargs -0
。
-r
内部のすべてのファイルをsome/dir/
再帰的に検索します。
POSIX 的には:
find some/dir -type f -size +0 -exec grep -q search-text {} \;
-exec cat {} + > dump.test
grep
これは、空でないファイルごとに1 つのコマンドを実行することになるため、効率が低下します。