954,219 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

newbie question regarding checking date of file

Please pardon the simplicity of this question, I kind of got thrown into these responsibilities at the last minute without training.


I
I need to move a file called status10.dat to a different directory using korn scripting.

[code = korn]
cp status10.dat* /cerner/d_p19/ccluserdir
[/code]

I only want to do this if the file is equal to today's date. Is it possible to check before moving the file?

Thanks in advance

jch
Newbie Poster
1 post since Oct 2007
Reputation Points: 10
Solved Threads: 0
 

Hi There,

That shouldn't be a problem at all.

Depending on what you want to do you can use find to get all files created within the last 24 hours (assuming /home as your current directory):

for x in `find /home -mtime 0`
do
mv $x /cernet/d_p19/ccluserdir/.
done

you can also use the -exec option of find to do the mv for you so you'd just have a one-line find script.

Hope this helps :)

, Mike

eggi
Posting Pro in Training
400 posts since Oct 2007
Reputation Points: 102
Solved Threads: 47
 

Hey, I just noticed that I misread your question - you need stuff from "today" and not the last 24 hours -- sorry - maybe that other info will be useful for another project.

If you want to only delete files from today, I think the simplest way to do it - to avoid the possible issues with spacing and/or tabbing would be to write a script that took a date argument in the following format:
./yourscript "Oct 3"
or
./yourscript "Oct 24"
Note that in the "Oct 3" there are two spaces separating the month and date and that "Oct 24" only has one space separating - this is to accommodate the behavious of "ls -l" -- at least, on solaris.

yourscript would be (assuming we're running it from the directory your files are in)

#!/bin/ksh

today=$1

for x in `ls -ld *`
do
filename=`echo $x|awk '{print $1}'`
result=`echo $x |grep $today >/dev/null 2>&1`
if [ $? -eq 0 ]
then
mv $filename /cernet/d_p19/ccluserdir/.
fi
done

I tend to write the short-stuff like I think. There's probably an easier way to do it :)

Thanks,
, Mike

eggi
Posting Pro in Training
400 posts since Oct 2007
Reputation Points: 102
Solved Threads: 47
 
find /path -type f -name "status10.dat*" -mtime 0 -print0 | xargs -i -0 cp "{}" /cerner/d_p19/ccluserdir
ghostdog74
Junior Poster
156 posts since Apr 2006
Reputation Points: 75
Solved Threads: 44
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You