我试图在当前目录中查找包含特定字符串的文件,并将所有这些文件的副本复制到新目录中。
我正在尝试使用的票据
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)
编辑:清理完事情后(见评论)...
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.
然后您希望将 的输出发送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
Run Code Online (Sandbox Code Playgroud)
在while循环中read -r将把 的输出grep放入变量 中filename。当您为变量赋值时,只需写下变量的名称即可。当你想要得到变量的值时,你可以$在它前面加上一个。
| 归档时间: |
|
| 查看次数: |
14472 次 |
| 最近记录: |