Solved

How to make a list of xth latest files in a dir and sub-dir?

Posted on 2003-11-06
5
262 Views
Last Modified: 2013-12-25
I'm looking for a script that will search through a dir and its subdirs and return in a list (html file),  the 10 or 20 most recent files, according to last modified timestamp (regardless of file type). Preferably the list will have a link to each of the files (the dir is a sub dir of my htdocs folder). I'm running Apache 2.0.48 on Win XpPro and have perl 5.6.1 installed. No real experience with perl so don't get too techie on me!!! ;-)

Thanks Robin
0
Comment
Question by:irlrobins
  • 4
5 Comments
 
LVL 84

Accepted Solution

by:
ozo earned 50 total points
ID: 9698520
use CGI qw/:standard/;
use File::Find;
@dirstosearch=("/path/to/dir");
find( sub{push@list,[-M,$File::Find::name] }, @dirstosearch);
print header,start_html("list of 20 latest files")
for( (sort $a->[0]<=>$b->[0],@list)[0..19] ){
    print qq(<a href="http://mysite.com/$_->[1]">$_->[1]</a><br>);
}
print end_html;
0
 

Author Comment

by:irlrobins
ID: 9698614
Thanks ozo. I'll try it out tomorrow and if it works the points are yours!
0
 

Author Comment

by:irlrobins
ID: 9700562
Ok I tried that and i get the a Server 500 error. Here's whats in the error logs:
[Fri Nov 07 12:09:30 2003] [error] [client xxxx] Premature end of script headers: list.cgi
[Fri Nov 07 12:09:30 2003] [error] [client xxxx] syntax error at C:/Program Files/Apache Group/Apache2/cgi-bin/list.cgi line 8, near "){"
[Fri Nov 07 12:09:30 2003] [error] [client xxxx] Execution of C:/Program Files/Apache Group/Apache2/cgi-bin/list.cgi aborted due to compilation errors.

Line 8 is "for( (sort $a->[0]<=>$b->[0],@list)[0..19] ){"

Whats the prob?

Thanks again
0
 

Author Comment

by:irlrobins
ID: 9700600
Ok i added a ';' to the end of line 7 "print header,start_html("list of 20 latest files")"

Script now runs and returns a list of 20 files. But they're not the most recent ones. In fact I've no idea why it picks the files that it does....
0
 

Author Comment

by:irlrobins
ID: 9702627
ok I've fixed it. I've changed the ozo's solution slightly:

a) to fix his errors (haven't you heard of testing?? ;-) )
b) it now only lists files that end in .txt and .jpg and no directories), Also using substr so i can formulate a proper url (it was adding extra dir's to the path)

Anyway Ozo's points are yours. Thanks for your help. Appreciate it. (solution follows)

#!/usr/bin/perl -w

use CGI qw/:standard/;
use File::Find;

@dirstosearch=("../htdocs/access/");
find ( sub  
      {
      if ((!-d)&&((/\.txt$/)||(/\.jpg$/))) #will not push dir's or files that don't end with txt or jpg to the array
      {
      push@list,[-M,$File::Find::name]
      }
      }, @dirstosearch);
print header,start_html("The 20 most Recent Files");
for( (sort {$a->[0]<=>$b->[0]}@list)[0..19] ){
  $substring1=substr($_->[1],9); #substring to from correct url
  $substring2=substr($_->[1],19); #substring to form visible link in correct format
  print qq(<a href="http://mysite.ie$substring1">$substring2</a><br>);
}
print end_html;
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recently I have been answering a lot of questions like this in IT forums that I frequent. The question posed is usually something along the lines of "We have software X installed and need to uninstall it for reason Y" or some other variant of the sa…
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …
The viewer will learn how to dynamically set the form action using jQuery.

791 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question