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

Copy Folders and its files with specific date in Linux

有没有办法在 Linux 中复制具有特定修改日期的文件夹及其内容,例如我有这个文件夹 A 和 B,其中包含修改日期为 2015-01-01 到 [=14] 的文件=],是否可以将仅包含在 2015-01-01 上修改的文件的文件夹 A 和 B 复制到 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)的文件

约翰

你需要的是find.

如前所述 here,您可以像这样使用 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  \;

它会起作用的。

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