Behaviour of "find" command


 
Thread Tools Search this Thread
# 1  
Behaviour of "find" command

Hi,

I'm trying to understand why the find command below is not listing a directory which was modified long back from the number of days specified in the mtime part. Smilie

Code:
user-aster :/mydir
$ ls -ld 1607570a-4fed44bb-4988
drwxr-xr-x  3 xyz abc 4096 Jun 29 01:02 1607570a-4fed44bb-4988
user-aster :/mydir
$ find . -type d -mtime +14
./1607570a-4fe95e03-14fb
./1607570a-4fe95e03-14fb/.mdir
user-aster :/mydir
$ uname -a
Linux aster 2.6.9-100.ELsmp #1 SMP Tue Feb 1 12:17:32 EST 2011 i686 i686 i386 GNU/Linux

If you see above, the directory "1607570a-4fed44bb-4988" doesn't show up in the find command. Can anyone point out why this is happening?

Thanks in advance.
# 2  
Code:
ls -ld 1607570a-4fed44bb-4988
drwxr-xr-x 2 xxxx xxxx 40 Jun 29 01:02 1607570a-4fed44bb-4988

find . -mtime +13 -type d
./1607570a-4fed44bb-4988

This User Gave Thanks to in2nix4life For This Post:
# 3  
Thanks in2nix4life!
But why does having 13 in mtime giving the correct output, when its 14 days past the file creation.
# 4  
The find command is a funky animal and its functionality seems to vary from OS-to-OS. I've found that if I need it to list data that is X days old, it seems to work if you subtract 1 from the real amount.
# 5  
two points -

I disagree with in2nix.
find's behavior is largely very consistent, expecially on versions of UNIX that are POSIX-compliant.

find uses the stat() system call. This returns mtime as seconds since Jan 01 1970, called 'epoch seconds'. mtime +13 means the file's modification time is greater than the number of seconds in a day times 13 - at least (84600 * 13) seconds ago.
Not actual calendar days.

This result for find is from the CURRENT TIME. The time right now in epoch seconds. If you want find to behave the way you think about dates you have to give those it kinds of dates/times in the form of an mtime you set on a dummy file

So, -mtime +days ain't gonna cut it.
touch -t YYYYmmddhhmm [somefilename] sets an exact mtime on a file
example:
Code:
touch -t 20120628000  dummy  # midnight june 28
find /path/to/files -type d ! -newer dummy  -exec ls -ld {} \;

This User Gave Thanks to jim mcnamara For This Post:
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Explaining behaviour of sudo bash "$0" "$@";

I've found this script part on the stackoverflow: if ; then sudo bash "$0" "$@"; exit "$?"; fi I realized that sudo bash "$0" "$@"; is the only needed for me. But the strange thing happens when I move this line outside the IF statement: sudo bash "$0" "$@"; stops the... (9 Replies)
Discussion started by: boqsc
9 Replies

2. Shell Programming and Scripting

find . -path "*_nobackup*" -prune -iname "*.PDF" \( ! -name "*_nobackup.*" \)

These three finds worked as expected: $ find . -iname "*.PDF" $ find . -iname "*.PDF" \( ! -name "*_nobackup.*" \) $ find . -path "*_nobackup*" -prune -iname "*.PDF" They all returned the match: ./folder/file.pdf :b: This find returned no matches: $ find . -path "*_nobackup*" -prune... (3 Replies)
Discussion started by: wolfv
3 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Shell Programming and Scripting

Find lines with "A" then change "E" to "X" same line

I have a bunch of random character lines like ABCEDFG. I want to find all lines with "A" and then change any "E" to "X" in the same line. ALL lines with "A" will have an "X" somewhere in it. I have tried sed awk and vi editor. I get close, not quite there. I know someone has already solved this... (10 Replies)
Discussion started by: nightwatchrenba
10 Replies

5. Shell Programming and Scripting

Problem with "find" and "grep" command

I want to list all files/lines which except those which contain the pattern ' /proc/' OR ' /sys/' (mind the leading blank). In a first approach I coded: find / -exec ls -ld {} | grep -v ' /proc/| /sys/' \; > /tmp/list.txt But this doesn't work. I got an error (under Ubuntu): grep:... (5 Replies)
Discussion started by: pstein
5 Replies

6. Shell Programming and Scripting

Strange "cut" command's behaviour

Hi, Suppose if I have a file having data like this: $ cat file.txt A B C D And, if I do a cut operation like this: $ cut -d" " -f2 file.txt The output is A C D This is the same for even if we try to get the field 3 with -f3 (assume line 2 has 3 fields : C E F). The above... (1 Reply)
Discussion started by: royalibrahim
1 Replies

7. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

8. Shell Programming and Scripting

find: "weird" regex behaviour

I have these two files in current dir: oos.txt oos_(copy).txt I execute this find command:find . -regex './oos*.txt'And this outputs only the first file (oos.txt)! :confused: Only if I add another asterisk to the find find . -regex './oos*.*txt' do I also get the second file... (7 Replies)
Discussion started by: courteous
7 Replies

9. Shell Programming and Scripting

unix "trap" command behaviour

Hi I am using "trap" command in my script to prevent the user from running Ctrl-C during the its execution. My script creates number of children processes which in turn create some children processes as well during the execution. When user / tester tries to run Ctrl-C, the parent process is... (1 Reply)
Discussion started by: aoussenko
1 Replies

10. Shell Programming and Scripting

"find command" to find the files in the current directories but not in the "subdir"

Dear friends, please tell me how to find the files which are existing in the current directory, but it sholud not search in the sub directories.. it is like this, current directory contains file1, file2, file3, dir1, dir2 and dir1 conatins file4, file5 and dir2 contains file6,... (9 Replies)
Discussion started by: swamymns
9 Replies

Featured Tech Videos