grepping模式和删除文件

Dan*_*Dan 1 grep file

我有一个外部文件,其中包含模式列表(每行模式).

pattern1
foo bar
pattern_n
bar
bar foo
Run Code Online (Sandbox Code Playgroud)

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

Eel*_*vex 7

如果我正确理解您的问题,您需要以下开关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)