我有一个外部文件,其中包含模式列表(每行模式).
pattern1
foo bar
pattern_n
bar
bar foo
Run Code Online (Sandbox Code Playgroud)
我希望grep所有文件包括使用这些模式的子文件夹中的文件,如果模式匹配,则将文件复制到某些/ tmp/mybackup /然后将其删除.这样做的好方法是什么?
如果我正确理解您的问题,您需要以下开关grep:
-R 以递归方式扫描-l 仅打印匹配的文件名-f 从文件中读取模式-I 忽略二进制文件所以:
grep -RlIf patterns-file *
Run Code Online (Sandbox Code Playgroud)
然后将此结果提供给其他实用程序以执行备份,例如xargs:
grep -RlIf patterns-file * | xargs -I {} mv {} /tmp/backup
Run Code Online (Sandbox Code Playgroud)
或者循环:
for afile in `grep -RlIf patterns-file *`; do
mv $afile /tmp/backup
done
Run Code Online (Sandbox Code Playgroud)