[ale] Bash question: | in find

Joe jknapka at earthlink.net
Fri Jan 24 15:28:12 EST 2003


Geoffrey <esoteric at 3times25.net> writes:

> I'm trying to figure out what you're trying to do there. I think
> you're trying to locate the tarball that contains the Xawd library??

Yes, in this particular instance. But more generally, I want
to know how to execute a pipeline (as opposed to a single
command) in an "-exec" clause in a "find" command.

> Why not let tar do the 'grep' for you:

Well, because I didn't know tar would do that :-)

> for fn in $(find /cdrom/slackware -name '*.tgz' -print); do
> 	echo -n $fn " "
> 	tar tvzf $fn '*libXaw3d*' 2>/dev/null
> done |grep Xaw3d

Nice. Thanks.

> 'echo -n' will print the file name without a newline, so the output of
> tar will be appended to the filename, and the 'grep' on the output of
> the for loop will print only those lines that contain the Xaw3d, hence
> all the files that did not contain the file you're looking for will be
> filtered out.

One slight problem: it needs an "echo" *after* the "tar" command,
otherwise *everything* comes out on one line.

Cheers,

-- Joe
_______________________________________________
Ale mailing list
Ale at ale.org
http://www.ale.org/mailman/listinfo/ale






More information about the Ale mailing list