使用 Linux 查找包含特定字符串的文件并复制到目录
Find Files Containing Certain String and Copy To Directory Using 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
你所做的只是徒劳的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
。当你给一个变量赋值时,你只需写下变量的名称。当你想得到变量的值时,你在它前面放一个$
。
您可以在 find 中使用多个 exec 来完成此任务
例如:
find . -type f -exec grep -lr "Qtr_1_results" {} \; -exec cp -r {} /data/jobs/file/obj1 \;
详情:
查找包含该字符串的所有文件。 grep -l 将列出文件。
find . -type f -exec grep -lr "Qtr_1_results" {} \;
第一部分的结果集是一个文件列表。将每个文件从结果复制到目标。
-exec cp -r {} /data/jobs/file/obj1 \;
我试图在当前目录中查找包含特定字符串的文件,并将所有这些文件复制到一个新目录中。
我正在尝试使用的凭证
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
。当你给一个变量赋值时,你只需写下变量的名称。当你想得到变量的值时,你在它前面放一个$
。
您可以在 find 中使用多个 exec 来完成此任务
例如:
find . -type f -exec grep -lr "Qtr_1_results" {} \; -exec cp -r {} /data/jobs/file/obj1 \;
详情:
查找包含该字符串的所有文件。 grep -l 将列出文件。
find . -type f -exec grep -lr "Qtr_1_results" {} \;
第一部分的结果集是一个文件列表。将每个文件从结果复制到目标。
-exec cp -r {} /data/jobs/file/obj1 \;