在Linux中复制具有特定日期的文件夹及其文件

时间:2015-01-19 09:07:06

标签: linux bash redhat

有没有办法在Linux中复制具有特定修改日期的文件夹及其内容,例如我有这个文件夹A和B它包含修改日期2015-01-012015-01-18的文件,是否可能复制文件夹A和B,仅包含在2015-01-01上修改的文件到2015-01-08

我做了一些研究并想出了这个

find ./ -type d -exec mkdir -p {} $target{} \;
find $source -mtime +30 -exec cp -p "{}" $target \;

但在执行第二行后,文件将被复制到目标位置的根目录,而不是与源相同的结构

例如,我将此源目录复制到目标

/storage/subdir1/* (modified date range - 2015-01-01 to 2015-01-18)
/storage/subdir2/* (modified date range - 2015-01-01 to 2015-01-18)
/storage/subdir3/* (modified date range - 2015-01-01 to 2015-01-18)
/storage/subdir4/* (modified date range - 2015-01-01 to 2015-01-18)

是否可能在目标目录(/ targetdir /)中自动创建所有子目录,并且它仅包含具有修改日期的文件(2015-01-01至2015-01-08)

约翰

2 个答案:

答案 0 :(得分:1)

它会起作用。

find A -mtime -18 -mtime +1 -exec cp \{\} B/ \;

答案 1 :(得分:0)

您需要的是find

如上所述[{3}},您可以使用find复制文件,如下所示:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend  \;

现在您需要的是在find命令中指定日期而不是模式,您可以这样做:

find /path/to/source -newermt "Jan 1 2015" -and \! -newermt "Jan 10 2015" -exec cp {} /path/to/dest  \;