BASH:按大小或日期自动移动重复的文件名

时间:2014-08-27 18:36:30

标签: bash

我试图自动将所有文件从folder2移动到具有大量重复文件名的folder1。

如果文件名匹配,我想根据大小和/或日期删除或移动/替换文件夹2中的文件。基本上对于重复的文件名,如果file2比file1更新或更大,我想移动/替换。否则,删除file2。

如果file2文件名是唯一的,只需移动它即可。

我知道我可以用" mv -u / source / * / destination"但似乎不是一个尺寸参数。

提前致谢。

1 个答案:

答案 0 :(得分:0)

解决方案并不困难。只需按照您需要的顺序应用测试,copydelete

#!/bin/bash

for i in folder_2/*; do

    [ -f "folder_1/${i##*/}" ] && \                                  # test if duplicate
    [ "$i" -nt "folder_1/${i##*/}" ] && \                            # test newer than
    [ $(stat -c%s "$i") -gt $(stat -c%s "folder_1/${i##*/}") ] && \  # test bigger than
    cp -a "$i" folder_1 || \                                         # if so copy/replace
    rm "$i"                                                          # if no delete

done