使用 Linux 查找包含特定字符串的文件并复制到目录

Mar*_*ari 3 linux putty

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

我正在尝试使用的票据

grep *Qtr_1_results*; cp /data/jobs/file/obj1
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

fan*_*nts 6

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

cp *Qtr_1_results* /data/jobs/file/obj1
Run Code Online (Sandbox Code Playgroud)

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

您想要做的事情如下。首先,您想要 grep 查找文件名,而不是字符串(您没有提供)。

grep -l the_string_you_are_looking_for *Qtr_1_results*
Run Code Online (Sandbox Code Playgroud)

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

然后您希望将 的输出发送grepwhile循环来处理它。您可以使用管道 ( |) 来完成此操作。分号;只是结束行。

grep -l the_string_you_are_looking_for *Qtr_1_results* | while read -r filename; do cp $filename /path/to/your/destination/folder; done
Run Code Online (Sandbox Code Playgroud)

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