从源目录中查找两个日期之间修改的文件(递归),并将其复制到具有相同目录结构的目标目录中

从源目录中查找两个日期之间修改的文件(递归),并将其复制到具有相同目录结构的目标目录中

我正在尝试将在两个日期之间修改过的文件从源文件夹复制到目标文件夹,

#!/usr/bin/ksh

source=/home/Amal/DELTA/SOURCE

target=/home/Amal/DELTA/TARGET

cd $source

find ./ -type f -newermt "2021-07-08 00:00:00" ! -newermt "2021-09-18 23:59:55" -printf "%h:%p:\0" |

while IFS=":" read path file; do

cp "$file" "$target"/"$path"

done

注意:源和目录已经具有相同的目录结构。我只需要复制与源目录相同的文件。

当我执行此脚本时,TARGET 文件夹中没有任何变化。

答案1

一种方法是使用rsync选项--include-from-filersync这是一个多功能文件复制实用程序,默认情况下会复制目录结构。使用该--include-from-file选项,您可以指向rsync一个列表(一个文本文件),该列表确定应包含在副本中的文件。可以使用命令创建此类列表find

因此,首先运行find来找到所需的文件并将它们列在文本文件中。然后使用rsync来复制这些文件。一旦您让它工作起来,编写脚本就很容易了,这很明显。

相关内容