0

I want to copy a files of particular date from one directory to another directory. Can anyone suggest me the Unix command for that ?

closed as unclear what you're asking by jayhendren, Anthon, Jeff Schaller, Eric Renouf, Tomasz Dec 29 '16 at 8:37

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Can you narrow down your question with example dates and directories? – Jeff Schaller Dec 28 '16 at 23:12
1

Have a look at the manpage of find, which has parameters like -atime, -mtime or -ctime to find files which got accessed, modified or changed at some given time, then you can further use the -exec option to copy these files.

1

The best way to do this kind of operation is using the find command. It has lots of approaches; I will explain two of these:

1) Relative Time Intervals
In this approach, you can specify exactly the begin and end timestamps and than filter out every file not modified/accessed/changed during that period. You can do that using the touch command, saving a file with a particular timestamp.
In the next example we create two markers (timestamp_begin_file and timestamp_end_file), set to 3 HOURS AGO and 1 HOUR AGO. Then we user the newerct and ! newerct options to select files newer then 3 hours and not newer then 1 hour (we just take a look at change time in this example). All files selected will be copied in $DESTINATION_PATH folder.

touch -t $(date -d '3 HOUR AGO' +%Y%m%d%H%M.%S) timestamp_begin_file
touch -t $(date -d '1 HOUR AGO' +%Y%m%d%H%M.%S) timestamp_end_file
find "$FOLDER" -newerct timestamp_begin_file ! -newermt timestamp_end_file -exec cp {} $DESTINATION_PATH \;

2) Absolute Time Intervals
You can use newermt options to filter out files you don't need in a specific interval of dates. Here we select only files modified during the day of 2007-06-07:

find . -type f -newermt 2007-06-07 ! -newermt 2007-06-08 -exec cp {} $DESTINATION_PATH \;  

As I said, lots of other alternatives exist (as @Jaleks suggested, -a/m/ctime, too, but due to lack of information, we cannot know which case fits for you).

For more info about time filtering in find, take a look at the manpage of find

Not the answer you're looking for? Browse other questions tagged or ask your own question.