如何对目录中的所有文件执行grep操作

使用xenserver,我想对目录中的每个文件执行一个命令,从命令输出中删除一些内容,并将其附加到一个文件中。

我清楚我想要使用的命令,以及如何根据需要清除string。

但是我不清楚的是我如何让它在每个文件上执行这个命令,直到下一个,直到找不到更多的文件。

grep $PATTERN *就足够了。 默认情况下,grep会跳过所有的子目录。 但是,如果你想grep通过它们, grep -r $PATTERN *就是这种情况。

在Linux中,我通常使用这个命令来recursion地grep一个dir中的特定文本

 grep -rni "string" * 

哪里,

r =recursion的,即search当前目录中的子目录
n =将行号打印到标准输出
我=不区分大小写的search

使用查找。 说真的,这是最好的方法,因为那样你才能真正看到它在运行的文件:

 find . -name "*.sql" -exec grep -H "slow" {} \; 

注意,-H是特定于mac的,它在结果中显示文件名。

如果你想做多个命令,你可以使用:

 for I in `ls *.sql` do grep "foo" $I >> foo.log grep "bar" $I >> bar.log done