On 10/23/2012 11:42 AM, Geert Uytterhoeven wrote: > On Tue, Oct 23, 2012 at 8:27 PM, Thomas Petazzoni > <thomas.petazz...@free-electrons.com> wrote: >>>> find . -exec fgrep -H "$1" {} \; >>>> >>>> but with lots and lots of other qualifiers. You can see a usable >>>> version at >>>> >>>> https://www.ridgerun.com/developer/wiki/index.php/Tip_of_the_day#finds_-_find_a_string_in_common_text_files >>> >>> This looks useful. >>> >>> I do something similar with the kernel. I have >>> a small one-line wrapper called armcgrep, which greps only the files >>> in the arch/arm section of the kernel source tree, and only those >>> with filenames matching the pattern "*.[chS]". Once things >>> are in the page cache, it works pretty fast. >>> >>> 'finds' looks similar, but it also omits some areas, and includes >>> things like Kconfig and others. I need to mentally digest all >>> the 'find' magic in it... >> >> Note also that you can use 'git grep', that will only grep the source >> files that are under version control, skipping all object files and >> other generated files you may have in your tree, if you're not doing >> out of tree builds. I use 'git grep' routinely. > > Yeah. For Tim's use case: > > git grep <pattern> -- "arch/arm/*.[chS]"
Actually I mis-stated the case a bit. I'm searching the whole kernel tree, but only including one architecture directory, arch/arm, in the search. This is primarily to omit extraneous matches for other architectures (which I might not be interested in at the moment). The way the kernel is written, there are often arch-specific functions or structures that show up multiple times if you don't filter down to one arch. Here's my solution (armcgrep): #!/bin/sh find . -path "./.pc" -prune -o -name "*.[chS]" | xargs egrep "$1" | grep -v arch/[^a] | grep -v arch/a[^r] I know there must be a simpler way to filter out non-arm arches than with two "grep -v"s (anyone??), but it works... :-) I have to prune out .pc because I'm using quilt and would otherwise get a lot of matches in that sub-directory. -- Tim ============================= Tim Bird Architecture Group Chair, CE Workgroup of the Linux Foundation Senior Staff Engineer, Sony Network Entertainment ============================= _______________________________________________ Celinux-dev mailing list Celinux-dev@lists.celinuxforum.org https://lists.celinuxforum.org/mailman/listinfo/celinux-dev