Search files between date ranges - Ctime usage


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Search files between date ranges - Ctime usage
# 1  
Old 05-12-2017
Search files between date ranges - Ctime usage

Hello,
I am a noob and need some help.
I am trying to find files created between a date range.

For Example:
These are files in directory.
Code:
-rw-r--r--    1 user staff             6 May  8 09:43 file1.txt
-rw-r--r--    1 user staff             6 May  8 09:43 file2.txt
-rw-r--r--    1 user staff             6 May  8 15:52 file3.txt
-rw-r--r--    1 user staff             6 May  8 15:52 file4.txt

sysdate: 05/12/2017 11:50 AM
I need all the files that got created on 05/08/2017 (irrespective of what time they got created on that date).
I am using below code
Code:
find . -ctime +4 -ctime -5

and this gives me only files file1 and file2.

My requirement is to get all 4 files in this case.
Appreciate your help.
# 2  
Old 05-12-2017
Maybe
Code:
LC_ALL=C ls -lo |
while read x x x x month day x file
do
  if [ "$month" = "May" ] && [ "$day" = "8" ]
  then
    printf "%s\n" "$file"
  fi
done

# 3  
Old 05-12-2017
You have a few issues that keep you from reaching your goal:
  1. Most filesystems do not keep track of when a file was created; the struct stat st_ctime field stores the timestamp of the last file status change. A file's status changes when a file is created, when a file's size changes (by truncating the contents of the file or by writing data to a position greater than the file's current size), or by changing the file's mode or access permissions.
  2. The find -ctime primary doesn't work on calendar dates; it works on multiple of 24 hours from the time you invoke find.
To find files whose last file contents modification time occurs on a given calendar date (or other period of time unrelated to when you invoke find), use touch to create one file with timestamps corresponding to the start time of your desired time period (startTimeFile in this example) and create another file with timestamps corresponding to the end time of your desired time period (endTimeFile) and then use:
Code:
find . -newer startTimeFile ! -newer endTimeFile

This User Gave Thanks to Don Cragun For This Post:
# 4  
Old 05-12-2017
Does the find command on your system (the details of which you fail to mention) offer the -daystart option?
# 5  
Old 05-12-2017
Hi Don, Thanks for the reply.
The solution you provided is working perfectly for this scenario.

We also have a requirement where the files are placed in our directory on a daily basis.
In this case, we want the choose and process the file based on a date (placed in our directory) range. The solution you provided is not working in this case as it looking at the file creation date.
# 6  
Old 05-12-2017
Quote:
Originally Posted by r@v!7*7@
Hi Don, Thanks for the reply.
The solution you provided is working perfectly for this scenario.

We also have a requirement where the files are placed in our directory on a daily basis.
In this case, we want the choose and process the file based on a date (placed in our directory) range. The solution you provided is not working in this case as it looking at the file creation date.
As I said before, most filesystems DO NOT STORE a file creation date for files and there is no way to determine the date on which a file was created using standard interfaces. If the last modification timestamp of a file is insufficient for you needs, you need to:
  1. make sure that you are storing these files on a filesystem type that keeps track of file creation dates, find an operating system specific way to look at the file's creation date for files on that filesystem, and find a way to use that operating system specific way of examining files to select the files you want to process,
  2. include the file creation date in the pathnames of your files and select files to process based on the date in each file's pathname, or
  3. put unprocessed files in a separate directory and move them to a different directory after they have been processed.
Since you haven't told us what operating system AND filesystem type you're using, we have no way to guess whether or not what you want is possible with method 1. You can use method 2 or 3 on any operating system.
This User Gave Thanks to Don Cragun For This Post:
# 7  
Old 05-13-2017
I am not sure of the filesystem type but we are using AIX OS.

I see the below dates available for a file. Is there a way we can use Find command to check by the date of last modification of i-node (May 12 in below).
Code:
$ ls -l file1.dat
-rw-r--r--    1 user staff             6 May  8 09:40 file1.dat
$ ls -lc file1.dat
-rw-r--r--    1 user staff             6 May 12 14:34 file1.dat

As
Code:
find . -newer startTimeFile ! -newer endTimeFile

is looking at May 8 in above example
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grepping the data between 2 date ranges

Hi There, Good Day !! I have txt file containing data in the below format. There are many lines, here i have mentioned for example. cat remo.txt 2/3/2017 file1 3/4/2016 file2 6/6/2015 file5 1/1/2018 file3 4/3/2014 file4 - - - I need to grep the file names for given date rage... (11 Replies)
Discussion started by: kumar85shiv
11 Replies

2. Programming

Derivation of values falling on date ranges

Hi Guys, I am having below tables used in oracle bal ID BALANCE BAL_DATE 1 -11.71 01-JAN-05 00.00.00 1 -405.71 02-JAN-05 00.00.00 1 -760.71 03-JAN-05 00.00.00 ref_table PRODUCT EFF_FROM_DATE EFF_TO_DATE TYPE MIN_AMT MAX_AMT CHARGE 12 01-JAN-05 00.00.00 01-JAN-06... (6 Replies)
Discussion started by: rohit_shinez
6 Replies

3. Shell Programming and Scripting

Search files with today date and files come anytime in between 10 pm to 1 am

Hi, i want to make script. In a directory everyday( exclude sat and sun) in between 10 pm to 1 am there are 2 files comes and when file comes it will mail us. Format for files is mentioned below. please help me on making this, and also have year end consider and if files come after 12 am it... (6 Replies)
Discussion started by: pallvi_mahajan
6 Replies

4. Shell Programming and Scripting

Search IP Address in list of ranges -- not working great

I have been struggling with a script to automate some security related activities. I have it pretty much working, all except the search. I have an input file formatted as such: 216.234.246.158 216.234.246.158 `` 24.249.221.22 24.249.221.200 `` 24.249.226.0 ... (4 Replies)
Discussion started by: tsunami4u
4 Replies

5. Shell Programming and Scripting

getting files between specific date ranges in solaris

hi ! how can i get files in a directory between certain date ranges ? say all files created/modified between Jan24 - Jan31 thanks (10 Replies)
Discussion started by: aliyesami
10 Replies

6. Linux

search on weblogic logs with date time ranges

Hi All, The developers want me to search and capture the weblogic log, you know this big logs of htmls. They want to me to have ranges on the date and time. Like from "2010-01-20 14:04:46,186" to "2010-01-20 15:00:12,490" I can only do this, cat /usr/local/bea/logs_prod1/debug.log... (1 Reply)
Discussion started by: itik
1 Replies

7. Shell Programming and Scripting

search on weblogic logs with date time ranges 2

Hi All, The developers want me to search and capture the weblogic log, you know this big logs of htmls. They want to me to have ranges on the date and time. Like from "2010-01-20 14:04:46,186" to "2010-01-20 15:00:12,490" I can only do this, cat /usr/local/bea/logs_prod1/debug.log |... (1 Reply)
Discussion started by: itik
1 Replies

8. Shell Programming and Scripting

date ranges

Hi, Please anyone help to achive this using perl or unix scripting . This is date in my table 20090224,based on the date need to check the files,If file exist for that date then increment by 1 for that date and check till max date 'i.e.20090301 and push those files . files1_20090224... (2 Replies)
Discussion started by: akil
2 Replies

9. Shell Programming and Scripting

Search values between ranges in File1 within File2

Hi people, I have 2 files, one with a list of non consecutive ranges (File1.txt), where each range begins with the value in column 1 and finishes with the value in column 2 in the same line, as can be seen above. 215312581156279 215312581166279 215312582342558 215312582357758... (4 Replies)
Discussion started by: cgkmal
4 Replies

10. Shell Programming and Scripting

find command: various date ranges

Hi, I have writtena script that will recursivly go into subdirecotries and report out what files there are in there that have not been accessed over various date ranges. I do this using a number of find commands: find . -path './.snapshot' -prune -o -type f -atime -8 find... (4 Replies)
Discussion started by: littleIdiot
4 Replies
Login or Register to Ask a Question