linux - 使用 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
解决方案
编辑:清理后(见评论)......
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
中。当您为变量赋值时,您只需编写变量的名称。当你想得到变量的值时,你$
在它前面放一个。
推荐阅读
- c - 如何通过信号反复重启程序
- python - 如何在不一次将所有数据加载到内存中的情况下对 HDF5 文件中的大量数据进行 numpy.reshape?
- prisma - prisma2 migrate 错误:数据库中的迁移比本地多
- python - Python 3 PyQt5 QtPrintSupport 快速打印(不显示对话框)
- java - 错误:类 complex 中的构造函数 complex 不能应用于给定类型;
- flutter - 无法从 flutter_sound 包中成功调用 startRecorder(uri: ...)
- android - 将多个 LayerList 添加到 API 19 设备导致充气错误
- webrtc - 我的 gst-rstp-server 配置有问题吗?
- asynchronous - async 是 Kotlin 中 Coroutines 的关键字吗?
- python - 为什么集合对象存储为frozenset,列表对象存储为元组?