Linux, only copy files before a certain date

copylinux

Is there a command to only copy files before a certain date, say 20120901? Furthermore, I would like to do it with cp -p capability (e.g. the original timestamp is preserved).

Best Answer

Yes, you should be able to do it with a combination of touch and find.

# Create a file with the desired timestamp
touch -d 20120901 /tmp/timefile

# Find all files older than that and act on them
find $PATH -type -f -and -not -newer /tmp/timefile -print0 | xargs -0 -i % cp -p % /new/location

So what this does is find all files underneath the directory $PATH that have been modified before September 1st, 2012 at 00:00:00 hours and copy them all to the directory /new/location