3

有时我遇到一种情况,即我必须将其内容中包含特定模式的所有文件从一个文件夹复制到另一个文件夹。

例如,DirA包含 100 个文件,其中有 60 个文件包含一个模式FOO。我的要求是将这 60 个文件DirADirB.

我通常会编写一个小的 shell 脚本来完成这项工作,并且它可以正常工作。但是,我试图了解是否有办法只使用一些命令的组合,这样我就不需要编写任何 shell 脚本。

4

4 回答 4

9

您可以使用

cp `grep -l 'FOO' dirA/*` dirB/

grep -l只会输出匹配模式的文件名。

于 2013-08-26T18:44:08.130 回答
1

复制包含特定内容并保留目录结构的文件可以通过以下方式完成:

cp --parents `grep -lr 'text_content' ./*` /path/to/copy/
于 2016-06-07T06:15:53.837 回答
0

如果您所有需要的文件都以FOO开头

cp dirA/FOO* dirB
于 2013-08-27T11:00:42.187 回答
0

以下脚本将满足您的需求

cd /"path were file exist"
grep -w "word you want to search inside a file" "file.name/write nothing in case    multiple files" >/dev/null

if [ $? -eq 0 ]

then
     mv ls -ltr | grep your word /path to move on 

     fi
于 2013-08-27T10:57:47.240 回答