比较两个目录中的文件日期

比较两个目录中的文件日期

我有两个包含同名文件的目录。基本上,如果 dir1/file.txt 的创建日期较新,我想用 dir2/file.txt 替换 dir1/file.txt 。但我认为我在 if 条件中遗漏了一些东西。

#!/bin/bash
for i in /dir1/*; do
        nameFIRR=$(basename "$i")
        dateINPUT="$(date -r $i)"
        dateOUTPUT="$(date -r /dir2/$nameFIRR)"

        if [ $dateINPUT -ge $dateOUTPUT ];
        then
         cp -u $i /dir2/$nameFIRR
        fi
done

答案1

常见的解决方案有两种:

  1. rsync是一:

rsync是一个强大的工具,有很多很多的选项;man rsync详情请参阅。但对于简单的概要来说,命令是:

rsync [选项] 源 目的地

在你的情况下,这应该可以做到:

#!/bin/bash
rsync -t dir1/file.txt dir2/file.txt 
  1. 带有选项的“复制”(cp)命令-u是另一个(根据斯蒂芬·基特的评论):
#!/bin/bash
cp -u dir1/file.txt dir2/file.txt 

相关内容