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

标签 linux putty

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

我正在尝试使用的凭证

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

最佳答案

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

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

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

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

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 中。当你给一个变量赋值时,你只需写下变量的名称。当你想获得变量的值时,你在它前面放一个$

关于linux - 使用 Linux 查找包含特定字符串的文件并复制到目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52451220/

相关文章:

putty - 服务器意外关闭 Windows 上的网络连接

linux - 用什么代替 Putty 和 vi

java文件排序在windows和linux中的区别

mysql - Apt-Get 找不到包

c - 套接字没有加入多播组,但它可以接收数据。

java - 如何测试子进程stdout/stderr是否被继承?

mysql - PhpMyAdmin 配置/无法看到输入文本字段

linux - Windows shell 脚本中的 echo %ERRORLEVEL% 与 echo $?在Linux中: are there any differences in behavior?

batch-file - 使用 Plink 和批处理文件的多个命令用于 Cisco 交换机

C++ 编译错误消息未在 PuTTY 中正确显示