将使用 grep 生成的文件复制到新文件夹中

1 command-line grep

我有一个关于终端中两个进程的串联的问题。我有一个包含超过 50.000 个文件的文件夹。我使用 grep 来查找那些包含特定术语的文件:

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files
Run Code Online (Sandbox Code Playgroud)

这给了我一个像这样的巨大列表:

/var/cqp/upload/heideko/import_files/26629.vrt
/var/cqp/upload/heideko/import_files/32862.vrt
Run Code Online (Sandbox Code Playgroud)

我需要将生成的文件复制到新文件夹中。我在想这样的事情:

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | cp * bio_files/
Run Code Online (Sandbox Code Playgroud)

我的尝试可能没有任何意义。我刚刚从终端开始。我只想将 grep 搜索生成的文件复制到名为 bio_files 的新文件夹中。我意识到我从 grep 得到的只是文件的名称。但我想使用这些名称作为 cp 命令的输入。非常感谢任何帮助。

ste*_*ver 5

使用xargs-t选项cp

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | xargs cp -t bio_files/
Run Code Online (Sandbox Code Playgroud)

如果您的文件名称中可能包含空格,则将所有内容都设置为空分隔:

grep -inrlZ "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | xargs -0 cp -t bio_files/
Run Code Online (Sandbox Code Playgroud)