|
Finding Out The Last Modified Time For Files
How to find the last modified time for files?
I need to find out the last modified time for the files which are
older than 6 months. If I use ls -l, the files which are older than 6 months,
I am just getting the day, month and year instead of exact time. I am using
Korn shell, and SUN OS.
Solution:
If you have stat on your machine, you can use that.
From man stat
Code:
The valid format sequences for files (without --filesystem):
%X - Time of last access as seconds since Epoch %x - Time
of last access %Y - Time of last
modification as seconds since
Epoch %y - Time of last modification %Z -
Time of last change as
seconds since Epoch %z - Time of last change
or
I would suggest using a version of the "find" command. I suggest a man
page is a good place to start, i.e. man find<cr>.
or
Otherwise you'll have to use perl or something similar to get a full
filetime - this gets the mtime of the file:
Code:
#!/usr/bin/perl
#^ PROGRAM DESCRIPTION
#^ -------------------
#^ This program prints the modification times of files.
#^ It uses the following format: inodetime.pl filename
#^ It will accept: inodetime.pl filename1 filename2 filename3
#^
inodetime.pl /tmp/file*
#^ The format of the output is: YYYYMMDDhhmmss filename
#^ example:
#^ $ filetime.pl
/tmp/t*
#^ 19961115105425
/tmp/test.sql
#^ 19970116113616
/tmp/tststat.pl
#^
############################################
# Get the (next) input from the command line
############################################
while ($curfile = $ARGV[0])
{
#################################################
# Do following code block only if $curfile exists
#################################################
if (-e $curfile)
{
# stat structure into variables
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat("$curfile");
# time structure into variables
local($sec,$min,$hr,$day,$mon,$yr,$wday,@dntcare)
= localtime($mtime);
$yr = ($yr>=70) ? $yr+1900 : $yr+2000;
$yr="$yr";
$mon = (++$mon < 10) ? "0$mon" :
"$mon";
$day = ($day < 10) ? "0$day" : "$day";
$hr = ($hr < 10) ? "0$hr" :
"$hr";
$min = ($min < 10) ? "0$min" : "$min";
$sec = ($sec < 10) ? "0$sec" : "$sec";
# Rearrange in the YYYYMMDDhhmmss format
and assign to $dte variable
$dte = join('',$yr,$mon,$day,$hr,$min,$sec);
# Print modification date and filename
print ("$dte\n");
}
# Shift to next position in command line
shift (@ARGV);
}
Have a Unix Problem
Do you have
a UNIX Question?
Unix Books :-
UNIX
Programming, Certification, System Administration, Performance Tuning Reference
Books
Return to : - Unix System Administration
Hints and Tips
(c) www.sap-basis-abap.com All material on this site is
Copyright.
Every effort is made to ensure the content integrity.
Information used on this site is at your own risk.
All product names are trademarks of their respective
companies.
The site www.sap-basis-abap.com is in no way affiliated
with or endorsed by any company listed at this site.
Any unauthorised copying or mirroring is prohibited.
|