On 2004-09-24 07:33, Juha Saarinen <juhasaarinen_at_gmail.com> wrote: > > You can use the -exec feature of 'find' other wise - > > find . -type f -exec grep "something" {} /dev/null \; > > -- the /dev/null is, according to a friend, "to provide grep with more > than one input file, so that includes the file name in any matches. The friend is correct. This is a nice trick. xargs will construct a command line by appending one or more filenames to what you pass. The important part being ``one or more''. If xargs appends one filename to an argument list of `grep foo', the executed command is `grep foo filename', which will not list the name of the file with every match since grep sees only 1 filename argument. If the argument list passed to xargs is `grep foo /dev/null' though, the executed command is `grep foo /dev/null filename'; in this case the filenames grep sees are always at least 2, which enables printing the filename with every match. This is better illustrated with an example: $ grep PS1 .bashrc export PS1='${USER}_at_\h[\A]${PWD}\$ ' $ grep PS1 /dev/null .bashrc .bashrc:export PS1='${USER}_at_\h[\A]${PWD}\$ ' Regards, GiorgosReceived on Thu Sep 23 2004 - 22:03:18 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:13 UTC