Find Syntax

Drew Tomlinson drew at mykitchentable.net
Mon Jan 2 09:24:50 PST 2006


On 1/2/2006 9:14 AM Adam Nealis said the following:

>--- Drew Tomlinson <drew at mykitchentable.net> wrote:
>
>  
>
>>On 1/2/2006 8:37 AM Kevin Brunelle said the following:
>>
>>    
>>
>>>On Monday 02 January 2006 11:19, Drew Tomlinson wrote:
>>> 
>>>
>>>      
>>>
>>>>I'm trying to find all files with a modification time older than three
>>>>weeks ago.  In reading the find man page and searching Google, it seems
>>>>the time returned by 'ls -l' is mtime.  Thus I construct the following
>>>>command:
>>>>
>>>>find . -not \( -newermt 3w \) -exec ls -l {} \;
>>>>
>>>>But it returns files that are newer:
>>>>
>>>>-rw-------  1 nobody  nobody  35292 Dec 29 08:43 totContactedRcvdPeers.rrd
>>>>-rw-------  1 nobody  nobody  35292 Dec 29 08:43 totContactedSentPeers.rrd
>>>>-rw-------  1 nobody  nobody  35292 Dec 29 08:33
>>>>./dc0/hosts/207/106/6/90/pktSent.rrd
>>>>
>>>>I've tried various placement of the '-not' and the )'s but I can't get
>>>>it right.  What am I missing?
>>>>   
>>>>
>>>>        
>>>>
>>>Have you tried
>>>
>>>find . -mtime +3w
>>>
>>>I don't know about the other syntax but this is what I find to be the 
>>>simplest.
>>> 
>>>
>>>      
>>>
>>Thanks for your reply.  I tried your syntax as:
>>
>>find . -mtime +3w -exec ls -l {} \;
>>
>>It returned nothing as I expected.  But then reduced it to one week as:
>>
>>find . -mtime +1w -exec ls -l {} \;
>>
>>which didn't seem to work because these (amongst many others) were returned:
>>
>>drwx------  2 nobody  nobody  512 Dec 27 14:03 102
>>total 2
>>drwx------  3 nobody  nobody  512 Dec 26 08:03 9
>>total 2
>>drwx------  2 nobody  nobody  512 Dec 26 08:03 7
>>total 432
>>-rw-------  1 nobody  nobody  35292 Jan  2 07:41 bytesRcvd.rrd
>>-rw-------  1 nobody  nobody  35292 Jan  2 07:41 bytesRcvdLoc.rrd
>>-rw-------  1 nobody  nobody  35292 Jan  2 07:41 bytesSent.rrd
>>
>>Any ideas why this might be?
>>    
>>
>
>if you do
>
>ls -l /a/directory/name
>
>you get directory contents. Is it possible that your "-exec ls -l {} \;"
>is listing directory contents? 
>

Yes, that's it!

>To see what I mean, compare these commands:
>
>cd /usr/ports/arabic
>find . -exec ls -l {} \;|wc
>     121     991    6569
>find . -exec ls -ld {} \;|wc
>      61     549    3942
>find . -ls | wc
>      61     671    6617
>
>If you only want files, and you really have to use -exec ls, you can do
>  
>
OK, I understand now.  I ultimately want to delete files and was just 
trying to check my command before doing the actual delete.  I will use 
'-ls' in my script.

>find . -type f -mtime +1w -exec ls -l {} \;
>  
>

This works too.  Thanks again!

Drew



More information about the freebsd-questions mailing list