Using a file"s modification date in the filename

Using a file"s modification date in the filename

am 24.04.2008 03:57:31 von cca.johnson

I want to be able to rename a file and prepend the file's modification
date at the front of the file. For example:
with a file named testme.txt and a modification date of April 1, 2006,
I want the renamed file to be named 20060401-testme.txt

What I can do is get the modification date using ctime, but it I can't
figure out how to format the output. I am able to format the date the
way I like using strftime. Here is some sample code which shows the
output I do and do not want:

#!/usr/bin/perl -w
use strict ;
use warnings ;
use POSIX qw(strftime);

# print today's date YYYYMMDD:
my $now_time = strftime "%Y%m%d", localtime;
print "I want it formatted this way:\n$now_time\n";

# print the modified date of file:
use File::stat;
use Time::localtime;
my $file = "testme.txt";
my $timestamp = ctime(stat($file)->mtime);
print "...but not this way:\n $timestamp\n";


Any assistance would be appreciated,

Re: Using a file"s modification date in the filename

am 24.04.2008 04:23:38 von jurgenex

cca.johnson@gmail.com wrote:
>I want to be able to rename a file and prepend the file's modification
>date at the front of the file. For example:
>with a file named testme.txt and a modification date of April 1, 2006,
>I want the renamed file to be named 20060401-testme.txt
>
>What I can do is get the modification date using ctime, but it I can't
>figure out how to format the output.

It seems like Date::Formatter will probably do what you are looking for.

jue

Re: Using a file"s modification date in the filename

am 24.04.2008 04:25:26 von xhoster

cca.johnson@gmail.com wrote:
> I want to be able to rename a file and prepend the file's modification
> date at the front of the file. For example:
> with a file named testme.txt and a modification date of April 1, 2006,
> I want the renamed file to be named 20060401-testme.txt
>
> What I can do is get the modification date using ctime, but it I can't
> figure out how to format the output. I am able to format the date the
> way I like using strftime. Here is some sample code which shows the
> output I do and do not want:
>
> #!/usr/bin/perl -w
> use strict ;
> use warnings ;
> use POSIX qw(strftime);
>
> # print today's date YYYYMMDD:
> my $now_time = strftime "%Y%m%d", localtime;
> print "I want it formatted this way:\n$now_time\n";

mtime and time both use seconds since the epoch, so
it should work the same way if you just give localtime the results of
mtime instead of letting it default to using time.

my $now_time = strftime "%Y%m%d", localtime(stat($file)->mtime);

Xho

--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.

Re: Using a file"s modification date in the filename

am 24.04.2008 05:41:20 von cca.johnson

On Apr 23, 9:25 pm, xhos...@gmail.com wrote:
> cca.john...@gmail.com wrote:
> > I want to be able to rename a file and prepend the file's modification
> > date at the front of the file. For example:
> > with a file named testme.txt and a modification date of April 1, 2006,
> > I want the renamed file to be named 20060401-testme.txt
>
> > What I can do is get the modification date using ctime, but it I can't
> > figure out how to format the output. I am able to format the date the
> > way I like using strftime. Here is some sample code which shows the
> > output I do and do not want:
>
> > #!/usr/bin/perl -w
> > use strict ;
> > use warnings ;
> > use POSIX qw(strftime);
>
> > # print today's date YYYYMMDD:
> > my $now_time = strftime "%Y%m%d", localtime;
> > print "I want it formatted this way:\n$now_time\n";
>
> mtime and time both use seconds since the epoch, so
> it should work the same way if you just give localtime the results of
> mtime instead of letting it default to using time.
>
> my $now_time = strftime "%Y%m%d", localtime(stat($file)->mtime);
>
> Xho

After I removed use Time::localtime, this worked without error. My
guess is that there is a conflict between POSIX qw(strftime)and
Time::localtime. Here is what I have:

#!/usr/bin/perl -w
use strict ;
use warnings ;
use POSIX qw(strftime);
use File::Copy;
use File::stat;

# print today's date YYYYMMDD:
my $now_time = strftime "%Y%m%d", localtime;
print "I want it formatted this way:\n$now_time\n";

# print the modified date of file:
my $file = "testme.txt";
my $file_time = strftime "%Y%m%d", localtime(stat($file)->mtime);
print "file $file will be renamed $file_time-$file\n";
copy("$file", "$file_time-$file") or die "can't copy file: $!";

Thank you,

Re: Using a file"s modification date in the filename

am 24.04.2008 08:34:09 von Gerry Ford

"Jürgen Exner" wrote in message
news:rerv041l3mb08vm1ga2qkim0915id8trbk@4ax.com...
> cca.johnson@gmail.com wrote:
>>I want to be able to rename a file and prepend the file's modification
>>date at the front of the file. For example:
>>with a file named testme.txt and a modification date of April 1, 2006,
>>I want the renamed file to be named 20060401-testme.txt
>>
>>What I can do is get the modification date using ctime, but it I can't
>>figure out how to format the output.
>
> It seems like Date::Formatter will probably do what you are looking for.

http://search.cpan.org/~stevan/Date-Formatter-0.09/lib/Date/ Formatter.pm

I thought I'd chase after it, as if wanting to install the module myself.
I'm disappointed that ActiveState's PPM rarely has the modules I'm looking
for. Maybe I don't know how to look. The authors included this caveat:

For serious date/time involved work, skip my module and go straight to the
DateTime project at L. Don't even waste your time
with anything else.

, and this link to the larger question in Perl:
http://www.perl.com/pub/a/2003/03/13/datetime.html

--
"Life in Lubbock, Texas, taught me two things: One is that God loves you
and you're going to burn in hell. The other is that sex is the most
awful, filthy thing on earth and you should save it for someone you love."

~~ Butch Hancock