Here is a sample C program to do what you requested.
It is not perfect and I leave it up to you to find and repair.
--
Daniel R. Oldham Ph.D.
Computer Engineer
Satellite Networks and Architectures Branch
NASA Glenn Research Center
21000 Brookpark Road (MS 54-5)
Cleveland OH 44135
216.433.6307 - voice
216.433.8705 - fax
[EMAIL PROTECTED]
>>>>>>>>>>>>>>>>>> Original Message <<<<<<<<<<<<<<<<<<
On 2/4/02, 12:40:09 PM, Antti Hakulinen
<[EMAIL PROTECTED]> wrote regarding C programming problems...:
> Hi there.
> I'm a C language newbie and i'm not cabable of doing one program on my
own
> yet, so care to point the best "What you personally think as..." site to
me
> about learing C language.
> Mostly i am interested in time functions etc etc...
> I would like to construct a little program that moves files of certain
date
> from one directory to another.
> For example, a program that would move all files to another directory
which
> are two days older than the current date...
> Any examples anywhere??
> I must be blind but i didn't find any...
> Thankz in advance.
> Regards: Antti...
> ***********************************************************
> Antti Hakulinen, Production IT Support
> Flextronics Holding Finland Oy
> P.O Box 11 (Jaakontie 1)
> 39201 KYR�SKOSKI, FINLAND
> GSM +358 40 7789 682
> e-mail: [EMAIL PROTECTED]
> www.flextronics.com
> ***********************************************************
> ###########################################
> This message has been scanned by F-Secure Anti-Virus for Microsoft
Exchange.
> _______________________________________________
> Seawolf-list mailing list
> [EMAIL PROTECTED]
> https://listman.redhat.com/mailman/listinfo/seawolf-list
/*******************************************************************************
*
* FILE: movefiles.c
*
* DESC: move files from a directory to another if within time frame
*
* AUTHOR: Dr. Daniel R. Oldham, NASA Glenn Research Center
*
* DATE: February 5, 2002
*
* EDIT HISTORY:
*
*
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
/*
* define global variables
*/
int interval; /* in seconds */
char fromdirname[ 128];
char todirname[ 128];
/*
* process the command line parameters
*/
void process_command_line( char *command)
{
if( !strncmp( command, "-F", 2))
{
if( command[2])
{
strcpy( fromdirname, &command[2]);
return;
}
}
if( !strncmp( command, "-T", 2))
{
if( command[2])
{
strcpy( todirname, &command[2]);
return;
}
}
if( !strncmp( command, "-I", 2))
{
if( command[2])
{
sscanf( &command[2], "%d", &interval);
return;
}
}
printf( "Usage: movefiles [-Ffromdirname] [-Ttodirname] [-Iinterval]\n");
printf( "Where: fromdirname = where to check file from directory\n");
printf( "Where: todirname = where to move file to directory\n");
printf( "Where: interval = time interval in seconds of file modification date
to move\n");
exit( -1);
}
/*
* main program
*/
int main( int argc, char *argv[])
{
time_t timeval;
DIR *dir;
struct dirent *dent;
struct stat stat;
char command[ 256];
/*
* initialize global variables
*/
interval = 60 * 60 * 24 * 2; /* 60 seconds * 60 minutes * 24 hours * 2 days
*/
strcpy( fromdirname, ".");
strcpy( todirname, "..");
/*
* process the command line args
*/
while( --argc)
process_command_line( *++argv);
/*
* get the current time
*/
time( &timeval);
/*
* open the directory
*/
dir = opendir( fromdirname);
if( dir)
{
for( dent = readdir( dir); dent; dent = readdir( dir))
{
/*
* check for a valid file name, NOT a directory "." ".." or a hidden file
".something"
*/
if( *dent->d_name == '.')
continue;
/*
* get the file status information
*/
if( ! lstat( dent->d_name, &stat))
{
/*
* check if the file modify time plus time interval is greater than current time
*/
if( timeval < stat.st_mtime + interval)
{
sprintf( command, "mv %s/%s %s/\n",
fromdirname, dent->d_name, todirname);
/*
* execute the command but commented out at this time
*/
printf( "%s", command);
// system( command);
}
}
}
}
/*
* exit
*/
exit( 0);
}
#-----------------------------------------------------------------------------
# makefile
# Dr. Daniel R. Oldham February 5, 2002
#
# REVISION HISTORY
#
#-----------------------------------------------------------------------------
.KEEP_STATE:
SHELL=/bin/bash
#
# c compiler and linker
#
CC= gcc
LINK= gcc
#
# yacc lex compiler linker flags
#
YFLAGS = -dv
LFLAGS =
CFLAGS =
LDFLAGS =
#
# linker
#
LIBRARIES= -lm
#
# to make all
#
all: movefiles
#
# movefiles
#
MOVEFILES_SRCS = movefiles.c
MOVEFILES_OBJS = $(MOVEFILES_SRCS:%.c=%.o)
movefiles: $(MOVEFILES_OBJS)
$(LINK) $(MOVEFILES_OBJS) $(LIBRARIES) $(LDFLAGS) -o movefiles
movefiles.o: movefiles.c Makefile
# clean
#
clean:
-rm -f *.o lex.c yacc.c y.output