Visit Our UNIX and Linux User Community


Problem with find command when used with mtime


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Problem with find command when used with mtime
# 1  
Old 01-07-2008
Problem with find command when used with mtime

All,


Please find the below comand . I am trying to list the file that has not been accesed is past 14 days . But when you look at the display the directory "crecv1" which has date as today is displayed .. Why it is happening .

I send this code instead of ls -ltr as rm -f -r in production . I mean it to remove the file that was not accesed in 14 days . Instead it removed all the filed from crecv1 directory .. Please let me know why .. I am wried up ..


find /work/can/transfer/ -name "*" -mtime +14 -exec ls -ltr "{}" ";"


total 144512
drwxr-xr-x 2 crcv1ftp canusr 8192 May 1 2007 crcv1ftp
-rwxrwxrwx 1 scottj canusr 72928579 May 1 2007 spcurruswst.gz
-rwxrwxrwx 1 scottj canusr 1006258 Sep 19 15:33 s7041012_copy
drwxrwxrwx 2 hamelmi1 canusr 8192 Nov 6 09:28 item
drwxrwxrwx 3 crcv1ftp canusr 24576 Jan 7 12:15 crecv1
-rwxrwxrwx 1 scottj canusr 1006258 Sep 19 15:33 /work/can/transfer/s7041012_copy
-rwxrwxrwx 1 scottj canusr 72928579 May 1 2007 /work/can/transfer/spcurruswst.gz
/work/can/transfer/crecv1/.ssh unreadable
total 0
find: cannot open /work/can/transfer/crecv1/.ssh
total 0
-rw-r--r-- 1 crcv1ftp canusr 0 Sep 4 2003 *
-rw-r--r-- 1 crcv1ftp canusr 0 Sep 4 2003 /work/can/transfer/crcv1ftp/*
-r--r--r-- 1 crcv1ftp canusr 832 Nov 14 2000 /work/can/transfer/crcv1ftp/.cshrc
-r--r--r-- 1 crcv1ftp canusr 347 Nov 14 2000 /work/can/transfer/crcv1ftp/.exrc
-r--r--r-- 1 crcv1ftp canusr 334 Nov 14 2000 /work/can/transfer/crcv1ftp/.login
-r--r--r-- 1 crcv1ftp canusr 439 Nov 14 2000 /work/can/transfer/crcv1ftp/.profile
-rw------- 1 crcv1ftp canusr 2962 May 1 2007 /work/can/transfer/crcv1ftp/.sh_history
total 0


Thanks,
Arun
# 2  
Old 01-07-2008
Your command is looking for anything, file OR folder since you aren't specifying it to look ONLY for files with "-type f".

Try this instead:
Code:
find /work/can/transfer/ -type f -mtime +14 -exec ls -ltr "{}" ";"

I hope this helps....Cassj

****** I had to come back and update this after looking at it further. *********
I just noticed this too. You said wanted to find files that had "not been accessed is past 14 days". You should use "-atime" (accessed) instead of "-mtime (modified). And since you wanted the ones that were NOT accessed, you should use "-not -atime -14". "-14" means 14 days or less. So to put it all together:

Code:
find /work/can/transfer/ -type f -not -atime -14 -exec ls -ltr "{}" ";"


Last edited by cassj; 01-07-2008 at 04:53 PM..
# 3  
Old 01-07-2008
Hmmm, this seems to select the right files when I do it:

Code:
# find /tmp/ -name "*" -mtime +14 -exec ls -ldtr {} ; | wc -l
     120

# find /tmp/ -name "*" -mtime -14 -exec ls -ldtr {} ; | wc -l
      28

# find /tmp/ -name "*" -exec ls -ldtr {} ; | wc -l
     148

You might want to add "-type f" to limit the search to files only.
# 4  
Old 01-07-2008
First "-atime +14" selects files whose last access was more than 14 days ago. See https://www.unix.com/tips-tutorials/2...ime-atime.html


Next consider a set of files like this:
/toplevel
/toplevel/dir1
/toplevel/dir1/file1
/toplevel/dir1/file2

When you put files in dir1, this modifies dir1 but not toplevel so a
find /toplevel -mtime +14
will eventually find /toplevel. So then you do a "rm -rf /toplevel" the entire directory hierarchy is removed. "ls -ltr /toplevel" will report on the entire hierarchy as well. The find command is already scanning the directory structure. You don't want to use -r on the commands spawned from it in most cases. Even without -r, ls will, by default, show the contents of a directory unless you use -d with it.
# 5  
Old 01-08-2008
Actually the command i issued is

find /work/can/transfer/ -name "*" -mtime +28 -exec rm -f -r "{}" ";"

But what hapenned was in side the /work/can/transfer/ there is a directory called /crecv1.

When the script run on first day from cron it changes the time of the directory /crecv1 to the current day even though it dodnt delete any file from the directory /crecv1.

And when the script run on second day . What it is doing was it is deleting all files from the directory even though the rule was to delete 28 days mtime.

Please help me to know why it happens .

THanks,
Arun
 

Previous Thread | Next Thread
Test Your Knowledge in Computers #197
Difficulty: Easy
C# ranked higher than C according to the TIOBE Index for October 2019.
True or False?

10 More Discussions You Might Find Interesting

1. AIX

AIX - find command with mtime

Hello experts, I would get from a list of files, which are more ancient than 1 hour. Examples: Current date: Wed Oct 28 16:10:02 SAT 2015 using: find path -name 'file_name. *' -mtime +0 I see files with less at 00:00:00 date of the current day. /path/file_name.20151027170725... (7 Replies)
Discussion started by: carlino70
7 Replies

2. Shell Programming and Scripting

Find by name and mtime

Hi, I'm trying to find all files that have a .ksh and .p extension and that are 7 days old by using the below find command but it doesn't seem to as expected. It gives me random results.. Can someone point out what may be wrong? find . -name "*.ksh" -o -name "*.p" -mtime -7 (2 Replies)
Discussion started by: Jazmania
2 Replies

3. UNIX for Dummies Questions & Answers

Find using mtime

Hi, so I was using mtime and its not behaving the way I would think its supposed too. I have two pdf files. One modified today and another 6 months ago. I upload them to the solaris server. Then I run the below find statements. This finds my 2 files find *.pdf -type f -name '*.pdf' this finds... (2 Replies)
Discussion started by: vsekvsek
2 Replies

4. Shell Programming and Scripting

Help on find -mtime -exec

Hello people. Part of my script: echo "Compressing files older than 2 months in ${TEMP_DIR} directory ..." find ${DATA_DIR}/ -name '*.dat' -mtime 61 -exec compress {} \; #BELOW COMMAND DOES NOT WORK :-( <<<<<<----------- find ${DATA_DIR}/ -name '*.o.lines.*' -mtime 61 -exec compress {}... (2 Replies)
Discussion started by: drbiloukos
2 Replies

5. Shell Programming and Scripting

find -mtime +7

Dear all, find $ADMIN_DIR/$SID/arch/ -name '*.gz' -mtime +7 -exec rm {} \; is it retaining 7 days OR 8 days .gz files ? Thanks Prakash (10 Replies)
Discussion started by: prakashoracledb
10 Replies

6. Shell Programming and Scripting

What is -mtime 0 in find command?

What is "-mtime 0" option in find command. Does it consider the files that are of today lets say today is 4th Aug or will include files 24 hrs past from the current time???? (3 Replies)
Discussion started by: sachinkl
3 Replies

7. UNIX for Dummies Questions & Answers

find mtime syntax

Hi guys, I am looking for a way of moving all files out of a directory with a time stamp greater then the one I specify. Can anyone suggest a way of doing so? For example, move all files out of dir1 which were created after 17:00 into dir2. Thanks :) (1 Reply)
Discussion started by: JayC89
1 Replies

8. UNIX for Dummies Questions & Answers

(find) mtime vs. (unix) mtime

Hi I've made some test with perl script to learn more about mtime... So, my question is : Why the mtime from findfind /usr/local/sbin -ctime -1 -mtime -1 \( -name "*.log" -o -name "*.gz" \) -print are not the same as mtime from unix/linux in ls -ltr or in stat() function in perl : stat -... (2 Replies)
Discussion started by: hiddenshadow
2 Replies

9. UNIX for Dummies Questions & Answers

problem with find and mtime

I am using HP-UNIX , The below command doesnt display anything although i have changed a file in the directory by toutch -t 200010101800 nfile find /tmp/transfer/ -name "*.*" -mtime +1 Any problrm with the find command i written . .Please help ??.. Thanks, Arun (4 Replies)
Discussion started by: arunkumar_mca
4 Replies

10. UNIX for Dummies Questions & Answers

find . -mtime

...what am i doing wrong?? I need to find all files older than 30 days and delete but I can't get it to pull details for ANY + times. The file below has a time stamp which is older than 1 day, however if I try and select it using any of the -time flags it just doesn't see it. (the same thing... (1 Reply)
Discussion started by: topcat8
1 Replies

Featured Tech Videos