Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Apr 2003 14:16:17 -0500
From:      Jim Trigg <jtrigg@spamcop.net>
To:        freebsd-questions@freebsd.org
Subject:   Re: #!sh grep and move files
Message-ID:  <20030403191617.GC58403@s-gabriel.org>
In-Reply-To: <200304031147.30097.mbettinger@championelevators.com>
References:  <200304031147.30097.mbettinger@championelevators.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Apr 03, 2003 at 11:47:30AM -0600, Matthew Bettinger wrote:
> 
> I am trying to find the best way to search through several thousand files and 
> move some to a different directory.  The files are all prefixed with LB.  
> Like, LBX99.DAT141683.
> 
> These are data transactions and contain one line.  The lines i am trying to 
> search for all begin with 
> 
> 1~TA~  (standing for timeand attendance labor transactions)
> 
>  I've tried
> 
> #!/usr/bin/sh
> for x in `find /dir -type f -exec grep '1~TA' [] \;`

This will print matching lines; what you want here is grep -l, but see below.
> do
> mv $x /newdir
> done
> ----------------------------
> 
> 
> There  seems to be something i am missing like some output redirection or an 
> ls listing... probably alot more.
> 
> I know this can be done in a one liner somehow but I need it to be executed 
> from cron.

find is actually a bit of overkill; this can be done as follows:
#!/usr/bin/sh
mv `grep -lr '1~TA' /dir` /newdir

If you're using it from cron, make sure to use full paths for mv and grep
(and find, if you keep using it) as the cron path may not be what you
expect.

Jim
-- 
Jim Trigg, Lord High Everything Else  O-          /"\
                                                  \ /  ASCII RIBBON CAMPAIGN
Hostmaster, Huie Kin family website                X    HELP CURE HTML MAIL
Verger, All Saints Church - Sharon Chapel         / \



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030403191617.GC58403>