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

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

我有一个关于在终端中连接两个进程的问题。我有一个包含超过 50,000 个文件的文件夹。我使用 grep 查找包含特定术语的文件:

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files

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

/var/cqp/upload/heideko/import_files/26629.vrt
/var/cqp/upload/heideko/import_files/32862.vrt

我需要将生成的文件复制到新文件夹中。我当时的想法是:

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | cp * bio_files/

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

答案1

使用xargs-t选择cp

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | xargs cp -t bio_files/

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

grep -inrlZ "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | xargs -0 cp -t bio_files/

相关内容