grepping模式和删除文件

时间:2011-02-21 23:45:35

标签: file grep

我有一个包含模式列表的外部文件(每行模式)。

pattern1
foo bar
pattern_n
bar
bar foo

我想grep所有文件,包括使用这些模式的子文件夹中的文件,如果模式匹配,则将文件复制到某些/ tmp / mybackup /然后将其删除。这样做的好方法是什么?

2 个答案:

答案 0 :(得分:7)

如果我理解你的问题,你需要以下开关来grep:

  • -R以递归方式扫描
  • -l仅打印匹配的文件名
  • -f从文件中读取模式
  • -I忽略二进制文件

这样:

grep -RlIf patterns-file *

然后将此结果提供给其他实用程序以执行备份,例如xargs:

grep -RlIf patterns-file * | xargs -I {} mv {} /tmp/backup

或循环:

for afile in `grep -RlIf patterns-file *`; do
   mv $afile /tmp/backup
done

答案 1 :(得分:1)

尝试

for x in `fgrep -f patternfile.txt -l -r .`; do cp $x /tmp/mybackup; rm $x; done