grep多个扩展当前和子文件夹

grep multiple extension current and subfolders

我正在尝试在当前和所有子文件夹中对多个扩展名进行grep。

1
grep -i -r -n 'hello' somepath/*.{php,html}

这只是对当前文件夹进行grepping,而不是对子文件夹进行grepping。

这样做的好方法是什么?


仅使用grep:

1
grep -irn --include='*.php' --include='*.html' 'hello' somepath/


其中之一:

1
2
find '(' -name '*.php' -o -name '*.html' ')' -exec grep -i -n hello {} +
find '(' -name '*.php' -o -name '*.html' ')' -print0 | xargs -0 grep -i -n hello


我也是这么想的,当我决定做一个bash脚本时,我从vim codesearch开始,很惊讶我以前已经做过这个了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
context="$3"
#ln = line number mt =  match mc = file
export GREP_COLORS="sl=32:mc=00;33:ms=05;40;31:ln="
if [["$context" =="" ]]; then  context=5; fi
grep --color=always -n -a -R -i -C"$context" --exclude='*.mp*'\
 --exclude='*.avi'\
 --exclude='*.flv'\
 --exclude='*.png'\
 --exclude='*.gif'\
 --exclude='*.jpg'\
 --exclude='*.wav'\
 --exclude='*.rar'\
 --exclude='*.zip'\
 --exclude='*.gz'\
 --exclude='*.sql'"$2""$1" | less -R

将此代码粘贴到名为codesearch的文件中,并将chmod设置为700或770我想下次我忘记的时候这里会更好

此脚本将用颜色显示匹配项和周围的上下文

1
./codesearch '/full/path' 'string to search'

和可选的定义默认值5周围的上下文行数

1
./codesearch '/full/path' 'string to search' 3

我编辑了代码并添加了一些眼糖

示例./codesearch./'eval'2screenshot codesearch

当您在终端中启用了"允许闪烁文本"时,如下所示