find / -name my\*balls | xargs grep -e batman -e robocop
On Mon, Feb 21, 2011 at 1:34 PM, Pascal Stumpf <pascal.stu...@cubes.de>
wrote:
> Implement a -H flag for grep, useful for combining e.g. find and grep.
>
> Can anyone commit it?
>
> Index: grep.1
> ===================================================================
> RCS file: /cvs/src/usr.bin/grep/grep.1,v
> retrieving revision 1.39
> diff -u -r1.39 grep.1
> --- grep.1 3 Sep 2010 11:09:28 -0000 1.39
> +++ grep.1 21 Feb 2011 12:29:41 -0000
> @@ -38,7 +38,7 @@
> .Sh SYNOPSIS
> .Nm grep
> .Bk -words
> -.Op Fl abcEFGhIiLlnqRsUVvwxZ
> +.Op Fl abcEFGHhIiLlnqRsUVvwxZ
> .Op Fl A Ar num
> .Op Fl B Ar num
> .Op Fl C Ns Op Ar num
> @@ -184,6 +184,10 @@
> .Nm grep
> to behave as traditional
> .Nm grep ) .
> +.It Fl H
> +Always print filename headers
> +.Pq i.e. filenames
> +with output lines.
> .It Fl h
> Never print filename headers
> .Pq i.e. filenames
> @@ -349,7 +353,7 @@
> specification.
> .Pp
> The flags
> -.Op Fl AaBbCGhILRUVwZ
> +.Op Fl AaBbCGHhILRUVwZ
> are extensions to that specification, and the behaviour of the
> .Fl f
> flag when used with an empty pattern file is left undefined.
> Index: grep.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/grep/grep.c,v
> retrieving revision 1.42
> diff -u -r1.42 grep.c
> --- grep.c 2 Jul 2010 22:18:03 -0000 1.42
> +++ grep.c 21 Feb 2011 12:29:41 -0000
> @@ -62,6 +62,7 @@
> int Eflag; /* -E: interpret pattern as extended regexp */
> int Fflag; /* -F: interpret pattern as list of fixed strings
*/
> int Gflag; /* -G: interpret pattern as basic regexp */
> +int Hflag; /* -H: always print filename header */
> int Lflag; /* -L: only show names of files with no matches */
> int Rflag; /* -R: recursively search directory trees */
> #ifndef NOZ
> @@ -106,9 +107,9 @@
> {
> fprintf(stderr,
> #ifdef NOZ
> - "usage: %s [-abcEFGhIiLlnqRsUVvwx] [-A num] [-B num]
[-C[num]]\n"
> + "usage: %s [-abcEFGHhIiLlnqRsUVvwx] [-A num] [-B num]
[-C[num]]\n"
> #else
> - "usage: %s [-abcEFGhIiLlnqRsUVvwxZ] [-A num] [-B num]
[-C[num]]\n"
> + "usage: %s [-abcEFGHhIiLlnqRsUVvwxZ] [-A num] [-B num]
[-C[num]]\n"
> #endif
> "\t[-e pattern] [-f file] [--binary-files=value]
[--context[=num]]\n"
> "\t[--line-buffered] [pattern] [file ...]\n", __progname);
> @@ -116,9 +117,9 @@
> }
>
> #ifdef NOZ
> -static char *optstr = "0123456789A:B:CEFGILRUVabce:f:hilnqrsuvwxy";
> +static char *optstr = "0123456789A:B:CEFGHILRUVabce:f:hilnqrsuvwxy";
> #else
> -static char *optstr = "0123456789A:B:CEFGILRUVZabce:f:hilnqrsuvwxy";
> +static char *optstr = "0123456789A:B:CEFGHILRUVZabce:f:hilnqrsuvwxy";
> #endif
>
> struct option long_options[] =
> @@ -134,6 +135,7 @@
> {"extended-regexp", no_argument, NULL, 'E'},
> {"fixed-strings", no_argument, NULL, 'F'},
> {"basic-regexp", no_argument, NULL, 'G'},
> + {"with-filename", no_argument, NULL, 'H'},
> {"binary", no_argument, NULL, 'U'},
> {"version", no_argument, NULL, 'V'},
> {"text", no_argument, NULL, 'a'},
> @@ -315,6 +317,9 @@
> Eflag = Fflag = 0;
> Gflag++;
> break;
> + case 'H':
> + Hflag++;
> + break;
> case 'I':
> binbehave = BIN_FILE_SKIP;
> break;
> @@ -476,7 +481,7 @@
> if (lbflag)
> setlinebuf(stdout);
>
> - if ((argc == 0 || argc == 1) && !Rflag)
> + if ((argc == 0 || argc == 1) && !Rflag && !Hflag)
> hflag = 1;
>
> if (argc == 0)
> Index: grep.h
> ===================================================================
> RCS file: /cvs/src/usr.bin/grep/grep.h,v
> retrieving revision 1.15
> diff -u -r1.15 grep.h
> --- grep.h 5 Apr 2010 03:03:55 -0000 1.15
> +++ grep.h 21 Feb 2011 12:29:41 -0000
> @@ -63,7 +63,7 @@
> extern int cflags, eflags;
>
> /* Command line flags */
> -extern int Aflag, Bflag, Eflag, Fflag, Gflag, Lflag,
> +extern int Aflag, Bflag, Eflag, Fflag, Gflag, Hflag, Lflag,
> Rflag, Zflag,
> bflag, cflag, hflag, iflag, lflag, nflag, qflag, sflag,
> vflag, wflag, xflag;