通过关键字执行bash循环

时间:2014-12-08 15:48:31

标签: bash

我有这样的脚本,它搜索我的邮件文件,如果找到关键字,它会将所有文件移动到其他位置。

如何让它适用于多个关键字?例如,我会有11个KEY,我不想一遍又一遍地复制和粘贴查找命令。

DIRF='move/from'
DIRT='move/to'
KEY='discount'

find $DIRF -type f -exec grep -ilR "$KEY" {} \; | xargs -I % mv % $DIRT

2 个答案:

答案 0 :(得分:3)

为什么你在这里使用find

您已经告诉grep递归操作(-R),所以只需将其指向$DIRF即可。如果您只提供文件(来自-R),那么type -f也毫无意义。

同样grep采用可以进行交替的模式。只需使用它。

grep -RilE 'KEY1|KEY2|KEY3|Key4' "$DIRF"

答案 1 :(得分:1)

for KEY in "discount"  "other_value" "other_value2"
do
    find $DIRF -type f -exec grep -ilR "$KEY " {} \; | xargs -I % mv % $DIRT
done