我正在尝试将在两个日期之间修改过的文件从源文件夹复制到目标文件夹,
#!/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-file
。rsync
这是一个多功能文件复制实用程序,默认情况下会复制目录结构。使用该--include-from-file
选项,您可以指向rsync
一个列表(一个文本文件),该列表确定应包含在副本中的文件。可以使用命令创建此类列表find
。
因此,首先运行find
来找到所需的文件并将它们列在文本文件中。然后使用rsync
来复制这些文件。一旦您让它工作起来,编写脚本就很容易了,这很明显。