Hi! Yesterday, we were discussing alternative methods for grepping source code. Here's a list of similar alternatives: $ find . -type f | xargs grep ARRAY_END; $ git ls-files | xargs grep ARRAY_END; $ git grep ARRAY_END; The version using find(1) has some problems: it is slow, especially after having built a kernel, when the directory is full of temporary objects. The version using git-grep(1) without IPC is the fastest, and doesn't have any problems, but it is limited to just grep(1). If we want to use sed(1), or any other programs, we're out of luck. A common program I want to use is grepc(1), which searches source code. See for example this code for finding the creat(2) system call: $ git ls-files | grep '\.[ch]$' | xargs grepc creat; fs/open.c:SYSCALL_DEFINE2(creat, const char __user *, pathname, umode_t, mode) { int flags = O_CREAT | O_WRONLY | O_TRUNC; if (force_o_largefile()) flags |= O_LARGEFILE; return do_sys_open(AT_FDCWD, pathname, flags, mode); } include/linux/syscalls.h:asmlinkage long sys_creat(const char __user *pathname, umode_t mode); tools/include/nolibc/fcntl.h:static __attribute__((unused)) int creat(const char *path, mode_t mode) { return open(path, O_CREAT | O_WRONLY | O_TRUNC, mode); } A problem with git-ls-files(1) is that it doesn't have a way to filter files by type. That is, it will list symlinks, which will affect the search. With find(1), I can control that with '-type f', which makes sure I only search in regular files. I'd like to have some feature in git-ls-files(1) that allows me to print files of the specified type. Since git(1) knows the type of the files, this should be doable without much overhead, right? Have a lovely day! Alex --