如何对目录中的所有文件执行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