すべての検索結果の内容をファイルにコピーします。検索結果をコピーしたくなく、検索結果のファイル内容をコピーしたいと思います。
たとえば、私の検索結果は10個のファイルのリストを返し、その10個のファイルの内容を単一のファイル(たとえば)にコピーしようとしますdump.test
。
答え1
GNUを使用しgrep
て、次の操作を行います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つのコマンドを実行することを意味するので、効率が悪くなります。