首页 > 解决方案 > 使用 Linux 查找包含特定字符串的文件并复制到目录

问题描述

我试图在当前目录中查找包含某个字符串的文件,并将所有这些文件的副本复制到一个新目录中。

我正在尝试使用的脚本

grep *Qtr_1_results*; cp /data/jobs/file/obj1

我无法复制,输出消息是:

Usage: cp [-fhipHILPU][-d|-e] [-r|-R] [-E{force|ignore|warn}] [--] src target
       or: cp [-fhipHILPU] [-d|-e] [-r|-R] [-E{force|ignore|warn}] [--] src1 ... srcN directory

标签: linuxputty

解决方案


编辑:清理后(见评论)......

cp *Qtr_1_results* /data/jobs/file/obj1

你所做的只是徒劳无功。随着;您结束命令并cp打印错误消息,因为您只提供源,而不是目标。

您想要做的是以下内容。首先,您要查找文件名,而不是字符串(您没有提供)。

grep -l the_string_you_are_looking_for *Qtr_1_results*

-l选项为您提供文件名,而不是the_string_you_are_looking_for找到的行。在这种情况下grep,将搜索文件名包含的所有文件Qtr_1_results

然后你想将输出发送grep到一个while循环来处理它。您可以使用管道 ( |) 执行此操作。分号;只是结束行。

grep -l the_string_you_are_looking_for *Qtr_1_results* | while read -r filename; do cp $filename /path/to/your/destination/folder; done

while循环read -r中会将 的输出grep放入变量filename中。当您为变量赋值时,您只需编写变量的名称。当你想得到变量的值时,你$在它前面放一个。


推荐阅读