有时我遇到了一种情况,我必须将包含文件夹中特定模式的所有文件从文件夹复制到另一个文件夹。将包含文件夹中特定文本的文件从文件夹复制到其他文件夹
例如,DirA
包含100个文件,其中有60个文件包含一个模式FOO
。我的要求是将这60个文件从DirA
复制到DirB
。
我通常会编写一个小shell脚本来完成这项工作,它可以正常工作。但是,我试图了解是否有办法只使用某些命令的组合,以至于我不需要编写任何shell脚本。
有时我遇到了一种情况,我必须将包含文件夹中特定模式的所有文件从文件夹复制到另一个文件夹。将包含文件夹中特定文本的文件从文件夹复制到其他文件夹
例如,DirA
包含100个文件,其中有60个文件包含一个模式FOO
。我的要求是将这60个文件从DirA
复制到DirB
。
我通常会编写一个小shell脚本来完成这项工作,它可以正常工作。但是,我试图了解是否有办法只使用某些命令的组合,以至于我不需要编写任何shell脚本。
您可以使用
cp `grep -l 'FOO' dirA/*` dirB/
grep -l
将匹配模式的文件只能输出名称。
下面的脚本工作,你正在寻找
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
什么?如果所有必需的文件开始FOO包含的具体内容,并保留目录结构
cp dirA/FOO* dirB
复制文件可以这样做:
cp --parents `grep -lr 'text_content' ./*` /path/to/copy/
也许你应该加上' - r'选项来grep因为orherwise终端抱怨说dirA /是一个目录 – tigerjack89